2016-05-24 13 views
0

Meine XML-DateiWie XML-Datei in Oracle PLSQL

unter Format sieht zu validieren
<?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> 

Meine entsprechenden Endtag nun in einem der Knoten verpasst wurde. Wie kann man in der PLSQL-Programmierung das fehlende Tag identifizieren? XMLDB-Option, die ich verwenden kann, aber ich möchte es in PLSQL tun.

Antwort

2

Wenn Sie nur prüfen müssen, ob es sich um ein gültiges XML handelt, können Sie es einfach konvertieren, indem Sie den Fehler eingeben. zum Beispiel:

gut 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 

schlecht 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 
+0

Danke Werke Aleksej.It – Root