我有以下 XML:
<xmlRequest>
<stats>
<match mid='40704828'>
<match_stats>
<ms aid='254664' cli_name='Hero_Engineer'>
<stat name='nickname'>lethallynx</stat>
<stat name='level'>11</stat>
</ms>
<ms aid='354522' cli_name='Hero_Devourer'>
<stat name='nickname'>AbendrothA</stat>
<stat name='level'>12</stat>
</ms>
</match_stats>
</match>
</stats>
</xmlRequest>
我正在尝试使用以下代码提取昵称和级别的值:
XmlNodeList nodeList = doc.SelectNodes("//ms");
List<string> myList = new List<string>();
foreach (XmlNode node in nodeList)
{
XmlNode nodeNickName = node.SelectSingleNode("//stat[@name='nickname']/text()");
mylist.Add(nodeNickName.Value);
}
问题是,虽然我可以看到节点对象正在使用下一组数据更新,但返回的值始终与第一个昵称相同。
所以 nodeNickName.Value 总是等于“lethallynx”。
有什么想法吗?
最佳答案
您的 //stat[@name='nickname']/text()
中的 //
xpath 查询选择根节点并从那里向下搜索。
您应该将其替换为 ./
,它从当前节点开始搜索,如 ./stat[@name='nickname']/text()
关于c# - 遍历XmlNodeList,值始终相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113132/