c# - 遍历XmlNodeList,值始终相同

标签 c# xml xpath

我有以下 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/

相关文章:

javascript - Javascript函数调用时需要括号吗?

xml - 创建不带结束标记的 XML 元素

java - “无法解析符号 R”android studio 错误

c# - 尝试通过从日期中减去日期来获取 int

c# - 从 .pfx 文件导入私钥

c# - 用于存储从 Web 服务检索的客户端数据的数据结构

XPath - "get first tr where its first td has text equal to ' abcd'"

php - 使用 DOMXPath 查询方法抓取网站时,如何解释丢失的 xPath 并保持数据统一?

python - 如何检查html文档中是否存在指定xpath的元素?

c# - 以编程方式使用 wsdl 和 wsdl 解析创建代理