使用 XML.修改如何在现有节点下插入节点



使用SQL和函数xml.modify是否可以在特定节点下添加新节点?

这是我的 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>

我目前有

SET @xml.modify('insert <TEST11>{sql:variable("@TEST11")}</TEST11> as first into 
(TESTCASESUMMARY/TESTCASES/TESTS[sql:variable("@counter")]/TEST10)[1]')

我需要在测试 11 下获得测试 10 并且不在同一水平上

谢谢

我希望我能正确理解...

可以使用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>

相关内容

  • 没有找到相关文章

最新更新