C# 按顺序获取xml节点
我的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 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;
-不确定这是否回答了你的问题。