在Oracle表中有一个XMLTYPE列,我想使用UpdateXML方法更新一些xml元素的值,但由于名称空间应用于非父类的xml元素,我遇到了麻烦。我的elmenets的xml结构看起来像:
<a>
<b xmlns="urn:www.someSite.com/myModel">
<c>my value</c>
</b>
</a>
并更新以下表单不起作用:
UPDATE myTable
SET myColumn = UpdateXML(myColumn, '/a/b/c','other value', 'xmlns="urn:www.someSite.com/myModel"');
答案 0 :(得分:2)
与this post几乎相同,但更丑陋......
UPDATE myTable
SET myColumn = updatexml(myColumn ,
'/a/*',
updatexml(extract(myColumn , '/a/*'),
'b/c/text()',
'my new value',
'xmlns=urn:www.someSite.com/myModel'));
编辑:如果b
中有多个a
元素,则必须更改a
内的整个文字,而不是每个孩子,所以你可以尝试:
UPDATE myTable
SET myColumn = updatexml(myColumn ,
'/a/text()',
updatexml(extract(myColumn , '/a/*'),
'b/c/text()',
'my new value',
'xmlns=urn:www.someSite.com/myModel'));