C#学习教程:使用linq对XMLDocument进行排序下面是一些其他示例,但没有一个与我想做的完全匹配:考虑以下XMLDocument对象:132我将如何使用linQ或其他方法根据节点“sortOrder”对文档进行排序?排序之后,outerxml基本上应该是这样的:UPDATE我已经取得了一些进展,现在数据已经排序了,但是如何更新原始未排序的XmlDocument?这是我到目前为止所拥有的:varsorted=fromxeintest.Element("CoverGroup").Elements()letso=xe.Element("properties").Element("displayOrder")letnum=(int)soorderbynumselectxe;varresult=newXElement("CoverGroup",sorted);我需要将更改应用回“policyDocument”。注意:一个封面可以有自己的封面组,然后可以再次使用自己的封面组封面。这至少下降了4个级别:即...上面的XPATH和foreach捕获上面的结构,所以我想也许只是用新的排序列表替换第一个foreach中的coverGroupXmlNode,但我不知道如何重构一个新的XmlNode。如果我们可以解决这个问题,我们可以简单地这样做:policyDocument.ReplaceChild(coverGroup,mySortedXmlNode)如果您从一开始就使用XDocument,这很容易做到。它可以像这样简单:XDocumentdoc=...;varbaseElement=doc.XPathSelectElement("/Policy/Covers");varsortedElements=baseElement.Elements().OrderBy(e=>(int)e.XPathSelectElement("properties/sortOrder")).ToList();//这个调用可能需要也可能不需要,但以防万一...baseElement.ReplaceAll(sortedElements);你的文档最终会被排序,你可以保存到你的XML文件或类似的文件中。通常,不应将常规DOMXmlDocument与LINQXDocumentAPI混合使用。选择其中之一。LINQtoXML恕我直言是更好的选择。您可以尝试以下操作(使用XDocument,而不是XmlDocument):vardocument=XDocument.Parse(/*thexmlstring*/);varsorted=fromxeindocument.Element("Policy").Element("Covers").Elements()letso=xe.Element("properties").Element("sortOrder")letnum=(int)soorderbynumselectxe;varresult=newXElement("Policy",newXElement("Covers",sorted));我正在编写没有测试的代码,但我认为这应该是一个很好的起点。使用Linq将xml排序为Xml。以上就是C#学习教程:使用linq对XMLDocument进行排序,分享全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——vardoc=XDocument.Parse(xmlString);//要排序的xml字符串varsortedElements=(fromxindoc.Descendants("properties")orderbyx.Element("sortOrder").ValueselectnewXElement(x.Parent.Name));varoutputResult=newXElement("Policy",newXElement("Covers",sortedElements));本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
