我有这个XML文档:
<aaa>
<x1></x1>
<x2></x2>
<x3></x3>
</aaa>
需要将其转换为此文档:
<aaa>
<bbb note="moved to new">
<x1></x1>
<x2></x2>
<x3></x3>
</bbb>
</aaa>
使用Linq-to-XML,将所有子节点添加到新后代的正确代码是什么,但仅当后代不存在时?我从这开始
var docRaw = XElement.Parse( documentString );
var bbbElem = docRaw.Elements( "aaa" ).Where( docRaw => !docRaw.Elements( "bbb" ).Any() );
但我认为这会让我走上错误的战略路径。
所有的想法都表示赞赏,谢谢。
答案 0 :(得分:2)
您可以使用ReplaceNodes()
替换根元素的内容。您可以使用名为<bbb>
的新节点替换它们,该节点包含根的以前的子元素。
doc.Root.ReplaceNodes(
new XElement("bbb",
new XAttribute("note", "moved to new"),
doc.Root.Elements()
)
);