gpt4 book ai didi

c# 排序 XElement,带注释

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:41 25 4
gpt4 key购买 nike

我有一个代表以下 xml 的 XElement:

<Node>
<Child id="1" /><!-- Comment 1 -->
<Child id="3" /><!-- Comment 3 -->
<Child id="2" /><!-- Comment 2 -->
</Node>

如何对 Node 的子节点进行排序,以便 XElement.ToString() 方法返回以下内容? child 后面的评论和文字一定要跟着一起动。

<Node>
<Child id="1" /><!-- Comment 1 -->
<Child id="2" /><!-- Comment 2 -->
<Child id="3" /><!-- Comment 3 -->
</Node>

最佳答案

假设每个元素后面都有相应的注释,请尝试以下操作:

var xDoc = XDocument.Parse(/* your xml */);
var reordered = xDoc.Root
.Elements("Child")
.Select(el => new {
Element = el,
Comments = el.NodesAfterSelf()
.TakeWhile(n => n.NodeType == XmlNodeType.Comment)
})
.OrderBy(pair => (int)pair.Element.Attribute("id"))
.SelectMany(pair => new [] { pair.Element }.Concat(pair.Comments));
xDoc.Root.ReplaceAll(reordered);

EDIT:编辑为允许每个元素有任意(包括 0)条评论;空格已被处理。

关于c# 排序 XElement,带注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22353447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com