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内容含有小于号"<"和"&"需要转义,否则会报错:
"<"转义"&lt;"
"&"转义"&amp;"

var str="***";//还有&或<的字符串
str=str.replace(new RegExp("<", "g"), "&lt;").replace(new RegExp("&", "g"), "&amp;");
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/HapetyPing/p/13852779.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!