我试图根据子节点的值从xml文档中删除父节点
这是我正在查看的一个非常简化的例子
<root>
<someactivity>
<id>123456789</id>
</someactivity>
</root>
我希望能够使用SQL Server / XQuery做的是删除整个&#39; someactivity&#39;节点及其内容通过搜索&#39; 123456789&#39;的ID在子节点&#39; id&#39;。
到目前为止,我有这样的事情: -
update mytablecontainingXMLcolumns
set xmldata.modify('delete //someactivity/id[text()][contains(.,"123456789")]')
但它没有像我预期的那样工作 - 似乎只是删除了&#39; id&#39;节点。我被困在这个阶段。任何帮助/指导将不胜感激。
答案 0 :(得分:0)
修改您的XPath / XQuery以选择父someactivity
元素而不是id
:
update mytablecontainingXMLcolumns
set xmldata.modify('delete //someactivity[contains(id,"123456789")]')
或者,如果一个id
中有多个someactivity
个元素,并且您希望删除父级,如果至少有一个id
匹配:
update mytablecontainingXMLcolumns
set xmldata.modify('delete //someactivity[id[contains(.,"123456789")]]')