2017-03-04 64 views
0

请帮我从复杂的XML中将数据提取到Oracle中的行中。 我试过extractValue一起,但它给人的错误:从Oracle中复杂的XML中提取数据

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> 
+1

XML在语法上是有效的。显示COMPLETE错误消息和任何堆栈跟踪。 –

+0

嗨,吉姆, 我试图通过运行以下命令来检索标签 'NationalId': 选择extractValue一起(X,“/ S:信封/ S:身体/ GetEmploymentStatusMultipleResponse/GetEmploymentStatusMultipleResult/B:EmploymentStatusStructure/C:EmploymentStatusStructure/c:Contributor/d:ContributorID/e:NationalID') Into Var1 From Dual; –

+0

错误消息是: ** ORA-31011:XML解析失败ORA-19202:发生了错误的XML处理** ** LPX-00601:无效的令牌:“\ S:信封\ S:车身系统\ GetEmploymentStatusMultipleResponse \ GetE mploymentStatusMultipleResult \ b:EmploymentStatusStructure \ c:EmploymentStatusStru cture \ c:Contributor \ d:ContributorID \ e:Na tionalID'** –

回答

-2

U se Utl_file或 只需 从dual中选择to_char(dbms_xmlgen.getxml('select * from ur_table'))作为xml_data;