复制其中AC节点到AD 如下
要求代码具有通用性 可以复制任意节点 到同级节点
<Root>
<AAA>
<AC>
<AE>
<AF>1111</AF>
<AG>2222</AG>
<AH>3333</AH>
<AI>4444</AI>
<AJ>5555</AJ>
</AE>
<AK>6666</AK>
<AF>7777</AF>
<AG>8888</AG>
</AC>
</AAA>
</Root>
结果 :
<Root>
<AAA>
<AC>
<AE>
<AF>1111</AF>
<AG>2222</AG>
<AH>3333</AH>
<AI>4444</AI>
<AJ>5555</AJ>
</AE>
<AK>6666</AK>
<AF>7777</AF>
<AG>8888</AG>
</AC>
<AD>
<AE>
<AF>1111</AF>
<AG>2222</AG>
<AH>3333</AH>
<AI>4444</AI>
<AJ>5555</AJ>
</AE>
<AK>6666</AK>
<AF>7777</AF>
<AG>8888</AG>
</AD>
</AAA>
</Root>
如复制 AE节点 到AZ 结果
<Root>
<AAA>
<AC>
<AE>
<AF>1111</AF>
<AG>2222</AG>
<AH>3333</AH>
<AI>4444</AI>
<AJ>5555</AJ>
</AE>
<AZ>
<AF>1111</AF>
<AG>2222</AG>
<AH>3333</AH>
<AI>4444</AI>
<AJ>5555</AJ>
</AZ>
<AK>6666</AK>
<AF>7777</AF>
<AG>8888</AG>
</AC>
</AAA>
</Root>
3 个解决方案
你可以使用InnerXml属性
比如
XmlElement xe = doc.CreateElement("AZ");
xe.InnerXml = 你的AE节点.InnerXml;
然后调用
AC节点.InsertAfter方法~~~~
先把你的要复制的节点找到。然后调用这个节点的CloneNode(true)方法,然后查你的目的节点是不是存在。如果存在就找到这个节点。调用追加节点的方法就可以了啊。如果不存在那么就追加薪节点,把复制的节点加到新生成的节点。再把新节点追加到你要放的位置。
不难的啊。
参考下面的说明
===================================
要插入的节点出自不同的文档上下文
Root=MyDoc.DocumentElement
StudentNode = Root.SelectSingleNode("//Student[@ST_ID='007']") '获得目标节点
ToRoot = MyTOdoc.DocumentElement
ToRoot.AppendChild(StudentNode) '插入到另外一个xml文档中
发生错误:要插入的节点出自不同的文档上下文。
XmlNode.AppendChild 方法适用于新建的节点
如果插入的节点是从另一个文档创建的,则可以使用 XmlDocument.ImportNode 将该节点导入到当前文档中。
随后,导入的节点即可插入到当前文档中。
XmlNode xn = parentNode.OwnerDocument.ImportNode(node,true);
parentNode.AppendChild(xn);