很抱歉在这里成为一个总菜鸟,但也许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);
}
答案 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;