从c#中的xml获取节点

时间:2011-02-08 11:19:00

标签: c# xml

我有一个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>C</ShowParentTerm>
         </Tab>
         <Tab Title="D to E" Order="2">
            <ShowParentTerm>D</ShowParentTerm>
            <ShowParentTerm>E</ShowParentTerm>
         </Tab>
      </Tabs>   
   </MetadataFormConfig>  
</Config>

我想通过FieldInternalName获取所有节点。

请告诉我如何做到这一点?

3 个答案:

答案 0 :(得分:3)

您可以使用SelectNodes("/Config/MetadataFormConfig[@FieldInternalName='Test']")

查看SelectNodes

上的详细信息

答案 1 :(得分:1)

Linq版本,用于通过FieldInternalName获取所有节点。

 // Loading from a file, you can also load from a stream
        XDocument loaded = XDocument.Load(@"d:\test.xml");
        // Query the data 
        var query = from c in loaded.Descendants("MetadataFormConfig")
                where (string)c.Attribute("FieldInternalName") == "Test"
                select c;

答案 2 :(得分:0)

你可以测试自己的xpath表达式并对其进行优化,直到得到你想要的结果为止,有很多XPATH测试人员在线,例如这里有一个:http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

然后去那里,从上面粘贴你的xml片段并使用XPATH,直到你得到你需要的东西。