0

以下の xml には、3 つの 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 データ型メソッド 'modify' の使用が正しくありません。このコンテキストでは、非ミューテーター メソッドが必要です。

私は何を間違っていますか。

4

1 に答える 1

0

他の人に役立つ場合は、これを修正するには update/set を使用する必要があり、xpath を少し変更する必要もあります

update table1 set xmlVal.modify('delete (/Items/Item[contains(@Name, "Blob")][Blob])')

于 2013-03-18T20:37:19.580 に答える