Oracle中通过xml获取数据:XVM-01046: [XQST0046] Invalid URILiteral
xml为:
<Items><item xmlns="0"><ItemId>32</ItemId></item></Items>
Oracle中通过xml获取数据:
SELECT * FROM XMLTABLE(XMLNAMESPACES('0' AS "ns1"), '/Items/ns1:item' PASSING XMLTYPE('<Items><item xmlns="0"><ItemId>32</ItemId></item></Items>') COLUMNS ITEM_ID VARCHAR2(50) PATH 'ns1:ItemId')
在个别数据库能执行正常,在有些数据库执行报错:
ORA-19112: 赋值时出错:
XVM-01046: [XQST0046] Invalid URILiteral
1 declare namespace ns1="0";/Items/ns1:item
- ^
把xmlns的值换成带有字母的字符串后执行正常(在一些数据库,xmlns的值为数字可以正常执行,有些不可以的换成带字母的字符串可以正常执行,还不清楚为什么)
另外,XML内容含有小于号"<"和"&"需要转义,否则会报错:
"<"转义"<"
"&"转义"&"
var str="***";//含有&或<的字符串 str=str.replace(new RegExp("<", "g"), "<").replace(new RegExp("&", "g"), "&");