Oracle
 sql >> Datenbank >  >> RDS >> Oracle

XML-Parsing in Oracle pl/sql

Ich denke, es gibt zwei Dinge, die Sie hier falsch machen:

  • Erstens, Ihr XPath-Ausdruck //@GovernmentCode/ ist falsch. Es sollte kein nachgestelltes / haben , und Sie möchten den @ nicht entweder weil GovernmentCode ist ein Element, kein Attribut.

  • Zweitens müssen Sie die XML-Namespace-Deklaration in Ihrem Aufruf von EXTRACTVALUE angeben sowie in Ihrem Aufruf von EXTRACT .

Wenn Sie diese Änderungen vornehmen, bleibt Ihnen der folgende Code. Ich habe es kurz getestet und es schien zu funktionieren:

SELECT EXTRACTVALUE (VALUE (xml_list), '//GovernmentCode', 'xmlns="http://www.irs.gov/efile"') AS SysID
  INTO lv_transid      
  FROM TABLE (
            XMLSEQUENCE (
               EXTRACT (in_xmlclob, '/AckTransmission/Acknowledgement',
                        'xmlns="http://www.irs.gov/efile"'))) xml_list;