【问题标题】:Extract data from complicated XML in Oracle在 Oracle 中从复杂的 XML 中提取数据
【发布时间】:2017-03-05 03:21:14
【问题描述】:

请帮助我从复杂的 XML 中提取数据到 oracle 中的行中。 我尝试了提取值,但它给出了错误:

ora-31011 xml 解析失败

xml处理中出现ora-19202错误

在输出 xml 下方:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <s:Body>
      <GetEmploymentStatusMultipleResponse xmlns="http://MSB.Services.Integration.External.ServicesContracts.GOSI.IGOSIService">
         <GetEmploymentStatusMultipleResult xmlns:b="http://MSB.Services.Integration.External.DataContracts.GOSI.MultipleEmploymentStatusStructure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <b:EmploymentStatusStructure xmlns:c="http://MSB.Services.Integration.External.DataContracts.GOSI.EmploymentStatusStructure">
               <c:EmploymentStatusStructure>
                  <c:Contributor xmlns:d="http://MSB.Services.Integration.External.DataContracts.GOSI.ContributorStructure">
                     <d:ContributorID xmlns:e="http://MSB.Services.Integration.External.DataContracts.GOSI.NationalIdentifierSummaryStructure">
                        <e:NationalID>1086828181</e:NationalID>
                     </d:ContributorID>
                  </c:Contributor>
                  <c:ContributorName xmlns:d="http://MSB.Services.Integration.External.DataContracts.GOSI.PersonNameDetailsStructure">
                     <d:Item xmlns:e="http://MSB.Services.Integration.External.DataContracts.GOSI.PersonNameBodyStructure">
                        <e:Title i:nil="true" xmlns:f="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
                        <e:Prefix i:nil="true" xmlns:f="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
                        <e:FirstName>test1</e:FirstName>
                        <e:SecondName>test2</e:SecondName>
                        <e:ThirdName>test3</e:ThirdName>
                        <e:FourthName i:nil="true"/>
                        <e:LastName>test4</e:LastName>
                        <e:Suffix i:nil="true" xmlns:f="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
                     </d:Item>
                     <d:Language>AR</d:Language>
                  </c:ContributorName>
                  <c:ContributorStatus>2</c:ContributorStatus>
               </c:EmploymentStatusStructure>
            </b:EmploymentStatusStructure>
         </GetEmploymentStatusMultipleResult>
      </GetEmploymentStatusMultipleResponse>
   </s:Body>
 </s:Envelope>

【问题讨论】:

  • XML 在语法上是有效的。显示 COMPLETE 错误消息和任何堆栈跟踪。
  • 嗨 Jim,我尝试通过运行以下命令来检索标签“NationalId”:选择 Extractvalue(X, '/s:Envelope/s:Body/GetEmploymentStatusMultipleResponse/GetEmploymentStatusMultipleResult/b:EmploymentStatusStructure/c: EmployStatusStructure/c:Contributor/d:ContributorID/e:NationalID') 从 Dual 到 Var1;
  • 错误信息是:ORA-31011: XML parsing failed ORA-19202: Error occurred in XML processing LPX-00601: Invalid token in: '\s :Envelope\s:Body\GetEmploymentStatusMultipleResponse\GetE‌​mploymentStatusMulti‌​pleResult\b:Employme‌​ntStatusStructure\c:‌​EmploymentStatusStructure\c:Contributor\‌​d:ContributorID\e:Na‌​tionalID'
  • 请不要在 cmets 中添加信息,改为edit您的帖子。
  • 看起来 xsd 验证失败。检查xmlns:e(http://MSB.Services.Integration.External.DataContracts.GOSI.PersonNameBodyStructure)引用的xsd

标签: xml oracle


【解决方案1】:

使用 Utl_file 或 简单地 选择 to_char(dbms_xmlgen.getxml('select* from ur_table') ) as xml_data from dual;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2017-07-26
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多