2013-07-08 123 views
0

我正在分析一个XML文件,并且有能力搜索任何元素。所有XML元素的查询集合

我的XML代码看起来相当非传统的(在我的掌握):

<DiagReport> 
<LicensingData> 
    <ToolVersion>6.3.9431.0</ToolVersion> 
    <LicensingStatus>SL_LICENSING</LicensingStatus> 
</LicensingData> 
<Health> 
    <Result>PASS</Result> 
    <TamperedItems></TamperedItems> 
</Health> 
<Genuine> 
    <ServerProps>GenuineId</ServerProps> 
</Genuine> 
</DiagReport> 

我想每个单一元素加载到一个集合,即一个集合包括ToolVersionResult,等在那里,我想通过每一个元素/名称对迭代,并根据元素,做不同的事情:

if (element.Equals(Result)) 
    //do something with "PASS" 

这是可以做到与LINQ?

回答

1

您可以使用LINQ到XML通过所有第二级元素进行迭代:

var xdoc = XDocument.Load(@"C:\test.xml"); 
    foreach (var element in xdoc.Element("DiagReport").Elements().Elements()) 
    { 
     if (element.Name == "Result") 
     { 
      string value = element.Value; 
     } 
    } 
+0

感谢。这正是我所期待的。 –

0

您可以使用Linq to Xml查询您的Xml文件,您可以搜索Elements,Attributes,并抓住你所需要的。

更多信息可以在这里找到:Basic Queries (LINQ to XML)

而且你可以创造简单的querys像下面。

XElement root = XElement.Parse(File.ReadAllText("C:\\Test.xml")); 
    var test = new 
    { 
     ToolVersion = root.Descendants("ToolVersion").FirstOrDefault().Value, 
     Result = root.Descendants("Result").FirstOrDefault().Value 
    }; 
相关问题