简体   繁体   English

如何在Oracle PLSQL中验证XML文件

[英]How to validate XML file in Oracle PLSQL

My XML file looks below format 我的XML文件格式如下

 <?xml version = '1.0'?>
<ROWSET>
   <ROW>
      <EMPNO>7369</EMPNO>
      <ENAME>SMITH</ENAME>
      <JOB>CLERK</JOB>
      <MGR>7902</MGR>
      <HIREDATE>12/17/1980 0:0:0</HIREDATE>
      <SAL>800</SAL>
      <DEPTNO>20</DEPTNO>
   </ROW>
   <ROW>
      <EMPNO>7499</EMPNO>
      <ENAME>ALLEN</ENAME>
      <JOB>SALESMAN</JOB>
      <MGR>7698</MGR>
      <HIREDATE>2/20/1981 0:0:0</HIREDATE>
      <SAL>1600</SAL>
      <COMM>300</COMM>
      <DEPTNO>30</DEPTNO>
   </ROW>
   <ROW>
      <EMPNO>7521</EMPNO>
      <ENAME>WARD</ENAME>
      <JOB>SALESMAN</JOB>
      <MGR>7698</MGR>
      <HIREDATE>2/22/1981 0:0:0</HIREDATE>
      <SAL>1250</SAL>
      <COMM>500</COMM>
      <DEPTNO>30</DEPTNO>
   </ROW  -- Now corresponding closing tag is missed in this line
</ROWSET>

Now My corresponding closing tag was missed in any of the nodes. 现在,在任何节点中都缺少我相应的结束标记。 In PLSQL programming how can identify the missing tag? 在PLSQL编程中如何识别丢失的标签? XMLDB option I can use,But I would like do it in PLSQL. 我可以使用XMLDB选项,但是我想在PLSQL中使用。

If you only need to check if it is a valid XML, you can simply try converting it, handlng the error; 如果只需要检查它是否是有效的XML,则可以简单地尝试将其转换并处理错误。 for example: 例如:

good xml: 好的xml:

SQL> select xmltype(q'[<?xml version = '1.0'?>
  2                  <ROWSET>
  3                     <ROW>
  4                        <EMPNO>7369</EMPNO>
  5                     </ROW>
  6                  </ROWSET>]')
  7  from dual;

XMLTYPE(Q'[<?XMLVERSION='1.0'?><ROWSET><ROW><EMPNO>7369</EMPNO></ROW></ROWSET>]'
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<ROWSET>
  <ROW>
    <EMPNO>7369</EMPNO>
  </ROW>
</ROWSET

bad xml: 错误的xml:

SQL> select xmltype(q'[<?xml version = '1.0'?>
  2                  <ROWSET>
  3                     <ROW>
  4                        <EMPNO>7369</EMPNO>
  5                     </ROW
  6                  </ROWSET>]')
  7  from dual;
ERROR:
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00231: invalid character 60 ('<') found in a Name or Nmtoken
Error at line 6
ORA-06512: at "SYS.XMLTYPE", line 310
ORA-06512: at line 1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM