XML 使用 Linq 将元素移入新后代到 XML C#?
XML Elements Move Inside New Descendant with Linq to XML C#?
我有这个 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() );
但我认为这让我走错了战略路径。
感谢所有想法,谢谢。
您可以使用ReplaceNodes()
替换根元素的内容。您可以将它们替换为名为 <bbb>
的新节点,该节点包含根的先前子元素。
doc.Root.ReplaceNodes(
new XElement("bbb",
new XAttribute("note", "moved to new"),
doc.Root.Elements()
)
);
我有这个 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() );
但我认为这让我走错了战略路径。
感谢所有想法,谢谢。
您可以使用ReplaceNodes()
替换根元素的内容。您可以将它们替换为名为 <bbb>
的新节点,该节点包含根的先前子元素。
doc.Root.ReplaceNodes(
new XElement("bbb",
new XAttribute("note", "moved to new"),
doc.Root.Elements()
)
);