输出具有特定属性的xml

时间:2014-07-18 14:06:45

标签: c# xml linq-to-xml

很抱歉在这里成为一个总菜鸟,但也许s / o可以指出我正确的方向!? 我从网上得到代码,我试图让它工作,但它不会:( xml是这样的:

<bla>
    <blub>
        <this that="one">test one</this>
        <this that="two">test two</this>
        <this that="three">test three</this>
    </blub>
</bla>


我希望显示“this”,其中“that”==“two”,你可能会说;) 但它只适用于第一个(一个),而不适用于“两个”或“三个”。

为什么不继续第2和第3个元素?谢谢你的建议!

  XElement tata = XElement.Load(@"\\somewhere\test.xml");

  var tutu = from titi in tata.Elements("blub")
             where (string)titi.Element("this").Attribute("that") == "two"
             select titi.Element("this");
  foreach (XElement soso in tutu)
  {
           Console.WriteLine(soso.Value);
  }

1 个答案:

答案 0 :(得分:1)

你的问题在这里:

where (string)titi.Element("this").Attribute("that") == "two"

特别是Element()获取第一个(按文档顺序排列)具有指定XName 的子元素,在您的情况下恰好是test one

相反,请使用XDocument而非XElement并查看文档中的所有元素:

XDocument tata = XDocument.Load(@"\\somewhere\test.xml");

var tutu = from titi in tata.Descendants("this")
           where titi.Attribute("that").Value == "two"
           select titi;