LinQ to XML;使用父节点值查询后代

时间:2010-11-15 13:31:29

标签: linq-to-xml parent-child

您好我有以下XML结构:

<Root>
 <Persons>
  <PersonList Category="Employee">
   <Person Name="John" Id="5" />
   <Person Name="Mary" Id="10" />
  </PersonList>
 </Persons>
</Root>

我希望使用LinqtoXML,为了获得可用Person的列表,我只需编写此查询:

var persons = from p in myDoc.Descendants("Person")
select p;

现在,我要做的是为了让所有Person where PersonList Element中的Category = =特定值?我不能使用 Parent ,因为我需要指定 PersonList 元素,因为XML的结构可能与此结构不同,但不是元素名称。 有可能吗?

1 个答案:

答案 0 :(得分:2)

听起来你正在寻找

var people = myDoc.Descendants("PersonList")
                  .Where(p => p.Attribute("Category").Value == something)
                  .Descendants("Person");

如果您想获取特定<Person>元素的类别,可以编写

var category = elem.AncestorsAndSelf("PersonList")
                   .First().Attribute("Category").Value;