如何使用Xpath获取所有节点属性和值?

问题描述:

我有以下XML:如何使用Xpath获取所有节点属性和值?

<xmlRequest> 
    <stats> 
     <player_stats aid="254664"> 
      <stat name="nickname">lethallynx</stat> 
      <stat name="acc_games_played">671</stat> 
      <stat name="acc_wins">397</stat> 
      <stat name="acc_losses">274</stat> 
      <stat name="acc_concedes">179</stat> 
     </player_stats> 
    </stats> 
</xmlRequest> 

我想获得的价值为统计"nickname"

我试着使用:

XmlNodeList nodes = doc.SelectNodes("//@name"); 

要获得所有属性的节点,但我似乎无法访问他们的价值观。

任何人都可以指向正确的方向吗?

如果你只是想获得STAT“昵称”的值,那么你可以这样写:

XmlNode node = doc.SelectSingleNode("//stat[@name='nickname']/text()"); 
Console.WriteLine(node.Value); // "lethallynx" 

说明:

  • 部分//stat返回文档中所有<stat>元素的列表。
  • 零件[@name='nickname']name属性上过滤此列表,所以在这种情况下,最终只有一个元素。
  • 部分/text()选择此<stat>元素内的文本节点。
+0

干杯,这正是我所需要的! – lethallynx 2011-05-16 00:09:36

您的命令是选择名称的所有属性。试试这个让所有元素的名称属性:

doc.SelectNodes("//*[@name]"); 
+0

这让我的价值,但现在我找不到什么属性是相等的。我想要做的是获得“昵称”和我的其他领域的价值。只有多个Xpath查询或迭代单个查询返回的节点时最好? – lethallynx 2011-05-16 00:05:33