查询所有XML元素的集合

时间:2013-07-08 23:27:23

标签: c# xml linq-to-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有关吗?

2 个答案:

答案 0 :(得分:1)

您可以使用LINQ to 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;
        }
    }

答案 1 :(得分:0)

您可以使用Linq to Xml查询Xml文档,然后搜索ElementsAttributes并抓住您需要的内容。

可在此处找到更多信息:Basic Queries (LINQ to XML)

你可以创建如下的简单查询。

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