如何使用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>
元素内的文本节点。
答
您的命令是选择名称的所有属性。试试这个让所有元素的名称属性:
doc.SelectNodes("//*[@name]");
+0
这让我的价值,但现在我找不到什么属性是相等的。我想要做的是获得“昵称”和我的其他领域的价值。只有多个Xpath查询或迭代单个查询返回的节点时最好? – lethallynx 2011-05-16 00:05:33
干杯,这正是我所需要的! – lethallynx 2011-05-16 00:09:36