我尝试为我的问题找到解决方案,但我在该领域(Linq、XML)的知识相当有限。 :(
已经找到一个模拟施工 https://stackoverflow.com/questions/6922180/sort-xmldocument-using-linq,但我需要更复杂的排序方式。
考虑以下 XML 文档:
<Envelope>
<Body>
<Table>
<Trans>
<B>1</B>
<A>3</A>
<C>5</C>
</Trans>
<Trans>
<D>1</D>
<A>6</A>
<C>3</C>
</Trans>
<Trans>
<A>1</A>
<C>3</C>
<B>5</B>
</Trans>
</Table>
</Body>
<Envelope>
有什么方法可以使用 C#/Linq 对 内的元素进行排序,还是必须分解所有 元素并将它们一一排序?
Update我有一个文件,这就是我想要完成的任务。 ;)
<Envelope>
<Body>
<Table>
<Trans>
<A>3</A>
<B>1</B>
<C>5</C>
</Trans>
<Trans>
<A>6</A>
<C>3</C>
<D>1</D>
</Trans>
<Trans>
<A>1</A>
<B>5</B>
<C>3</C>
</Trans>
</Table>
</Body>
<Envelope>
这实际上取决于您到底想要做什么(按顺序处理它们,还是对 XML 重新排序?)以及您到底意味着什么“排序”(按标签名称排序?按值排序?)。
如果您只想按顺序处理它们,这就是您对每个内部的所有元素进行排序的方法<Trans>
按值 (<D>1</D>
before <A>6</A>
):
XDocument doc = /* load up your XML */
var sorted = from trans in doc.Descendants("Trans")
select trans.Children().OrderBy(c => int.Parse(c.Value)).ToArray();
或者,以下是如何按标签名称排序(<A>6</A>
before <D>1</D>
):
var sorted = from trans in doc.Descendants("Trans")
select trans.Children().OrderBy(c => c.Name.LocalName).ToArray();
有了上面的内容,sorted
将是一个可枚举的数组集合。集合中的每个数组代表一个<Trans>
,每个这样的数组都包含<Trans>
为了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)