C# 按顺序获取xml节点

C# 按顺序获取xml节点,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我的xml文件如下所示: <?xml version="1.0" encoding="utf-8" ?> <Config> <MetadataFormConfig FieldInternalName="Test"> <Tabs> <Tab Title="A to C" Order="1"> <ShowParentTerm>A</ShowP

我的xml文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<Config>
  <MetadataFormConfig FieldInternalName="Test">
         <Tabs>
             <Tab Title="A to C" Order="1">
                 <ShowParentTerm>A</ShowParentTerm>
                 <ShowParentTerm>B</ShowParentTerm>
                 <ShowParentTerm>C1</ShowParentTerm>

             </Tab>
             <Tab Title="D to E" Order="2">
                 <ShowParentTerm>D</ShowParentTerm>
                 <ShowParentTerm>E</ShowParentTerm>
      </Tab>

    </Tabs>
  </MetadataFormConfig>
</Config>

A.
B
C1
D
E
我想按顺序获取tab元素。如果我将tab Title=“A到c”顺序更改为2,那么我希望先获取节点“D到E”,然后获取节点“A到c”


有谁能帮我做这件事吗?

您可以使用LINQ to XML来做这件事:

XDocument doc = XDocument.Load(@"test.xml");
var tabs = doc.Descendants("Tab")
              .OrderBy(t => Convert.ToInt32(t.Attribute("Order").Value))
              .ToList();

这将选择按
Order
属性值排序的选项卡元素列表。

您可以使用LINQ to XML执行此操作:

XDocument doc = XDocument.Load(@"test.xml");
var tabs = doc.Descendants("Tab")
              .OrderBy(t => Convert.ToInt32(t.Attribute("Order").Value))
              .ToList();

这将选择按
Order
属性值排序的选项卡元素列表。

我在使用代码时遇到此错误:“System.Collections.Generic.IEnumerable”不包含“OrderBy”的定义,并且没有扩展方法“OrderBy”接受类型为“System.Collections.Generic.IEnumerable”的第一个参数发现(是否缺少using指令或程序集引用?)和
使用System.Xml.Linq到你的程序中,明白了。但我想首先通过“FieldInternalName”获取MetadataFormConfig节点,然后通过顺序获取tab。你能告诉我怎么做吗?要获取
FieldInternalName
值,你可以执行
var metadata=doc.substands(“MetadataFormConfig”).First().Attribute(“FieldInternalName”).value-不确定这是否回答了您的问题。我在使用代码时遇到此错误:“System.Collections.Generic.IEnumerable”不包含“OrderBy”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型的第一个参数的扩展方法“OrderBy”(您缺少using指令或程序集引用吗?)您需要将
using System.Linq;
using System.Xml.Linq;
添加到您的程序中。我知道了。但我想首先通过“FieldInternalName”获取MetadataFormConfig节点然后按顺序获取制表符。你能建议我怎么做吗?要获取
FieldInternalName
值,你可以执行
var metadata=doc.substands(“MetadataFormConfig”).First().Attribute(“FieldInternalName”).value;
-不确定这是否回答了你的问题。