在下面的 xml 中,我有三个 5 /Item 元素,其中 4 个有一个 Blob 子元素。我想删除具有子 Blob 元素但仅在 Item/@Name 中包含文本“Blob”的元素。
<Items>
<Item Name="Blob123">
<Blob/>
</Item>
<Item Name="Blob124">
<Blob/>
</Item>
<Item Name="Blob125">
<Blob/>
</Item>
<Item Name="Blob126">
</Item>
<Item Name="Xyz126">
<Blob/>
</Item>
</Items>
此查询返回名为 'Blob%' 的 3 个 /Item 元素和一个子 /Blob 元素就好了。
select xmlVal.query('(/Items/Item[contains(@Name, "Blob")]/Blob/..)')
但是,当我尝试使用此 xquery 删除这些元素时:
select xmlVal.modify('delete (/Items/Item[contains(@Name, "Blob")]/Blob/..)')
我得到:不正确地使用 XML 数据类型方法“修改”。在这种情况下,需要一个非突变方法。
我究竟做错了什么。