插入soap xml内容后查询xml表
您好,在我将soap xml内容插入到名为foo的表中之后,但在查询内容时遇到了问题插入soap xml内容后查询xml表,xml,oracle,soap,Xml,Oracle,Soap,您好,在我将soap xml内容插入到名为foo的表中之后,但在查询内容时遇到了问题 <?xml version="1.0" encoding="UTF-8" ?> - <ns:AccountQueryPage_Output xmlns:ns="urn:crmondemand/ws/ecbs/account/"> - <ListOfAccount xmlns="urn:/crmondemand/xml/Account/Data" lastpage="true"
<?xml version="1.0" encoding="UTF-8" ?>
- <ns:AccountQueryPage_Output xmlns:ns="urn:crmondemand/ws/ecbs/account/">
- <ListOfAccount xmlns="urn:/crmondemand/xml/Account/Data" lastpage="true">
- <Account>
<Id>CCC-TEST01</Id>
<AccountName>John Smith Pty Ltd</AccountName>
</Account>
</ListOfAccount>
</ns:AccountQueryPage_Output>
我得到
ORA-31011: XML parsing failed
ORA-19213: error occurred in XML processing at lines 2
LPX-00209: PI names starting with XML are reserved
ORA-06512: at "SYS.XMLTYPE", line 272
ORA-06512: at line 1
31011. 00000 - "XML parsing failed"
*Cause: XML parser returned an error while trying to parse the document.
*Action: Check if the document to be parsed is valid.
关于我做错了什么有什么帮助吗
多谢各位
@鲁德万
嗨,ruudvan,我想问你是否知道如何从xml文件中提取记录计数
我要抢17680
问候
Liem函数EXTRACT和EXTRACTVALUE在11g中。您应该尝试使用XMLTABLE和XMLQUERY
下面是如何从XML中检索值。我向XML中添加了另一个测试帐户,这样您就知道它可以在多行上运行
WITH subq AS (SELECT XMLTYPE ('<?xml version="1.0" encoding="UTF-8" ?>
<ns:AccountQueryPage_Output xmlns:ns="urn:crmondemand/ws/ecbs/account/">
<ListOfAccount xmlns="urn:/crmondemand/xml/Account/Data" lastpage="true">
<Account>
<Id>CCC-TEST01</Id>
<AccountName>John Smith Pty Ltd</AccountName>
</Account>
<Account>
<Id>CCC-TEST02</Id>
<AccountName>Test Pty Ltd</AccountName>
</Account>
</ListOfAccount>
</ns:AccountQueryPage_Output>') AS my_xml FROM DUAL)
SELECT Acct_id, Acct_Name
FROM subq,
XMLTABLE (
xmlnamespaces ('urn:crmondemand/ws/ecbs/account/' AS "ns",
DEFAULT 'urn:/crmondemand/xml/Account/Data'),
'/ns:AccountQueryPage_Output/ListOfAccount/Account'
PASSING subq.my_xml
COLUMNS Acct_ID VARCHAR2 (30) PATH 'Id',
Acct_Name VARCHAR2 (30) PATH 'AccountName');
感谢ruudvan,我会非常欣赏它的。我可以为select clob列替换xml内容的硬编码吗?例如,当我试图从scott.foo获取错误ORA-31011:xml解析失败ORA-19213:xml处理第2行出现错误LPX-00209:以xml开头的PI名称保留ORA-06512:SYS.XMLTYPE,第272行ORA-06512:1行xml\u响应的数据类型是什么?如果表中已有xml,则无需编写该子查询。只需从SCOTT.foo f、XMLTABLE中选择列……传递f.xml_响应列;。确保xmlnamespaces和xpath相同,或者相应地更改查询。
WITH subq AS (SELECT XMLTYPE ('<?xml version="1.0" encoding="UTF-8" ?>
<ns:AccountQueryPage_Output xmlns:ns="urn:crmondemand/ws/ecbs/account/">
<ListOfAccount xmlns="urn:/crmondemand/xml/Account/Data" lastpage="true">
<Account>
<Id>CCC-TEST01</Id>
<AccountName>John Smith Pty Ltd</AccountName>
</Account>
<Account>
<Id>CCC-TEST02</Id>
<AccountName>Test Pty Ltd</AccountName>
</Account>
</ListOfAccount>
</ns:AccountQueryPage_Output>') AS my_xml FROM DUAL)
SELECT Acct_id, Acct_Name
FROM subq,
XMLTABLE (
xmlnamespaces ('urn:crmondemand/ws/ecbs/account/' AS "ns",
DEFAULT 'urn:/crmondemand/xml/Account/Data'),
'/ns:AccountQueryPage_Output/ListOfAccount/Account'
PASSING subq.my_xml
COLUMNS Acct_ID VARCHAR2 (30) PATH 'Id',
Acct_Name VARCHAR2 (30) PATH 'AccountName');