如何获取子节点属性

时间:2013-11-11 20:48:59

标签: c# xml linq

我有xml数据,我想找到一个特定的节点/属性(这里不确定相应的定义),然后从那里选择它的子节点的属性。

<Random>
<RandomChild ID="1" Name="First" />
</Random>
<Parent>
<Child ID="1" Name="First" />
<Child ID="2" Name="Second"/>
<Child ID="3" Name="Third"/>
<Child ID="4" Name="Fourth"/>
<Child ID="5" Name="Fifth"/>
<Child ID="6" Name="Sixth"/>
<Child ID="7" Name="Seventh"/>
<Child ID="8" Name="Eighth"/>
<Child ID="9" Name="Ninth"/>
</Parent>
<Random2>
<RandomChild2 ID="1" Name="First" />
</Random2>

我想要'父母'中的东西。正在使用的属性名称(ID和名称)出现在此xml的其他位置,因此我认为最有效的方法是找到“父”节点,然后选择其子节点属性(如果还有更多)有效的方式来解决这个让我知道)。

我尝试了各种各样的查询,但它们都未能初始化。我不是试图调试一个特定的查询,但更希望澄清如何实现我所追求的目标。我在这里已经阅读了十几个类似的问题,但它们似乎都是具有特定情况的答案的例子,我无法弄清楚我想象的是一个相对简单的过程。

1 个答案:

答案 0 :(得分:1)

XDocument doc = XDocument.Load("input.xml");
foreach (XElement child in doc.Descendants("Parent").Elements("Child"))
{
  Console.WriteLine("Id: {1}, Name: {2}", child.Attribute("ID").Value, child.Attribute("Name").Value);
}