XML
<?xml version="1.0" encoding="utf-8" ?>
<animals>
<animal id="fisrt">
<type>Dog</type>
<name>Han</name>
</animal>
<animal id="second">
<type>Cat</type>
<name>Leia</name>
</animal>
</animals>
C#
using System.Xml.Linq;
string id = "second";
var filter = from ab in element.Elements("animal") where ab.Attribute("id").Equals(id) select ab;
foreach (XElement selector in filter)
{
label1.Content = selector.Element("name").Value;
}
我需要帮助的是根据父元素的id选择元素。我们的目标是选择父母的ID是&#34;第二&#34;的名称,因此我试图获得&#34; Leia&#34;。我遇到的问题是标签没有发生任何事情。
我做错了什么以及如何解决这个问题。如果有人知道更好的方法来实现我的目标,我也会采取不同的方法。
答案 0 :(得分:1)
您错过了检查属性的值:
where ab.Attribute("id").Value.Equals(id)
希望这有帮助!
答案 1 :(得分:-1)
这个怎么样:
string name = xdoc.Elements("animal")
.Where (e=>e.Attribute("id")=="first")
.Elements("name")
.Select(e=>e.Value)
.FirstOrDefault();
基本上,您希望将id
属性的条件放在where
中并继续查询。
我知道这是方法注释而不是linq语法,我更喜欢它,因为当事情变得毛茸茸时更容易阅读。