2017-07-11 11 views
1

SQLと関数xml.modifyを使用すると、特定のノードの下に新しいノードを追加することができますか?ここでXMLを使用してノードを挿入する方法UNDERNEATH既存のノード

は、私は現在

SET @xml.modify('insert <TEST11>{sql:variable("@TEST11")}</TEST11> as first into 

(TESTCASESUMMARY/TESTCASES/TESTS[sql:variable("@counter")]/TEST10)[1]') 

を持っている私のXML

<TESTCASESUMMARY> 
    <TESTCASES> 
     <TESTS id="1"> 
      <TEST1>1</TEST1> 
      <TEST2>10</TEST2> 
      <TEST3>10</TEST3> 
      <TEST4>0</TEST4> 
      <TEST5>0.75</TEST5> 
      <TEST6>10</TEST6> 
      <TEST7/> 
      <TEST8>0.05</TEST8> 
      <TEST9>0.05</TEST9> 
      <TEST10>  <TEST11>0.05</TEST11>B</TEST10> 
      <TEST12/>       
      <TEST13/>     
    </TESTCASES>   
</TESTCASESUMMARY> 

である私は、テスト10の下でテスト11を取得する必要がありますし、同じレベルに

はあなた

答えて

0

に感謝しません私はこれを正しく得ることを望む...

afterを使用して、新しいノードを直接配置したいノードを指定することができます。しかし、このノードは

DECLARE @xml XML= 
N'<TESTCASESUMMARY> 
    <TESTCASES> 
     <TESTS id="1"> 
      <TEST1>1</TEST1> 
      <!-- more nodes --> 
      <TEST10>B</TEST10> 
      <TEST12/>       
      <TEST13/> 
     </TESTS>     
    </TESTCASES>   
</TESTCASESUMMARY>'; 

DECLARE @Value11 VARCHAR(100)='0.05'; 
DECLARE @counter INT=1; 

SET @xml.modify(N'insert <TEST11>{sql:variable("@Value11")}</TEST11> 
        after 
        (/TESTCASESUMMARY/TESTCASES/TESTS[sql:variable("@counter")]/TEST10)[1]'); 

SELECT @xml; 

...結果

<TESTCASESUMMARY> 
    <TESTCASES> 
    <TESTS id="1"> 
     <TEST1>1</TEST1> 
     <!-- more nodes --> 
     <TEST10>B</TEST10> 
     <TEST11>0.05</TEST11> 
     <TEST12 /> 
     <TEST13 /> 
    </TESTS> 
    </TESTCASES> 
</TESTCASESUMMARY> 
を存在している必要があります
関連する問題