- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个代表以下 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/
我第一次在 .NET 3.5 中使用 Linq for XML,但我在命名空间方面遇到了一些问题。即,XElement 打印如下:当我只想说 . 这是代码: XNamespace opfNa
请考虑这个 XML: 1000 Nima Agha 1002 Ligha
我的查询返回类型是IEnumerable .如何将结果数据转换为 XElement类型?可能吗?有人可以帮助我理解这一点。 var resQ = from e in docElmnt.Descenda
有没有办法用其他 XElement 有选择地替换 XElement 内容? 我有这个 XML: There is something I want to tell you.[pause=3]
我正在尝试使用 Linq 对 XElement 的子项进行排序,然后将现有的子项替换为已排序。 首先我创建 XElement: XElement WithLinq = new
在尝试添加某个元素之前,如何检查该元素是否存在于给定元素中? 背景:我有一个 XDocument X 作为子元素包含 Flowers 随后包含一个系列每个元素都命名为 Flower。每个 Flower
我有一个为列表对象生成 xml 的函数: public XDocument ToXML() { foreach (var row in this) { var xml
我有一个如下所示的 XML 文档: ..... ..... 我想选择所有 lev
我有一个名为“XUsers”的 XElement,它将包含如下所示的 XML: ...还有另一个 XElement,称为“XTasks”,它将包含如下数据:
我希望创建一个具有多个 XElement 子节点的顶级 XElement,如下所示。 Mike Smith Sam
假设我有以下 xml, ... 现在我想“插入”一个围绕 BeginsWith 子句的子句,所以它看起来像这样, ... 我如何使用 LinqToXml 实现这一点? 我主要做的 Add 方法 whe
我想从 B 中选择 COMMISSION 元素,其中每个 COMMISSION 元素的 ID 值不等于 A COMMISSION 元素。 这是我完整的 Main 方法: static void
我正在解析一个大的 xml 文件。所以我将 XmlReader 与 XElement 结合使用,而不是 XElement.Load()。 我已经从 XmlReader 创建了 XElement 对象,
我正在使用 C# .Net 3.5 并尝试将给定的 xml (XDocument) 转换为一个空的(其中 XElement.IsEmpty 为真)不包含文本值。我尝试将 XElement.Value
这是我的示例 xml: Title of RSS feed LINK Details about the feed en TITLE
我有一段类似下面的 xml: Value1_1 Value1_2 Value2_1 Value2_2 我想要的是生成一个 IEnumerab
给定以下 XML: ...以及对“SomeElement”的 XElement 引用和 XPath“Element1/Element2/@Attribute3”
我无法在迭代节点时删除节点,没关系。´ 我有一个包含 Guid 的列表。 我想删除该 xml 文件中的所有 XElement,其中 XElement 具有该列表的 Guid 那是我的 xml 文件:
我收到以下错误: Cannot implicitly convert type 'System.Collections.Generic.IEnumerable>' to 'System.Collect
我收到以下错误: Cannot implicitly convert type 'System.Collections.Generic.IEnumerable>' to 'System.Collect
我是一名优秀的程序员,十分优秀!