0

私は次のXMLを持っています

<Root xmlns:test="http://sample">
   <Values>
      <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="1">
      </Value>
      <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="1">
      </Value>
      <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2">
      </Value>
      <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2">
      </Value>
      <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="1">
      </Value>
   </Values>
</Root>

type=2ここでは、すべての値要素をに更新しようとしていtype = 3ます。

誰かがこれをどのように行うことができるか教えてもらえますか?

4

1 に答える 1

2
declare @XML xml = 
'<Root xmlns:test="http://sample">
  <Values>
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="1"></Value>
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="1"></Value>
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2"></Value>
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2"></Value>
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="1"></Value>
  </Values>
</Root>';

while @XML.exist('declare namespace d3p1="http://www.w3.org/2001/XMLSchema-instance";
                  /Root/Values/Value[@d3p1:type = "1"]') = 1
begin
  set @XML.modify('declare namespace d3p1="http://www.w3.org/2001/XMLSchema-instance";
                   replace value of (/Root/Values/Value[@d3p1:type="1"]/@d3p1:type)[1] 
                   with 2')
end

select @XML

結果:

<Root xmlns:test="http://sample">
  <Values>
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2" />
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2" />
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2" />
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2" />
    <Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema-instance" d3p1:type="2" />
  </Values>
</Root>
于 2012-11-28T14:29:43.753 に答える