遍历 XmlNodeList,值始终相同

本文关键字:XmlNodeList 遍历 | 更新日期: 2023-09-27 17:57:27

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

有什么想法吗?

遍历 XmlNodeList,值始终相同

//stat[@name='nickname']/text() xpath 查询中的//选择根节点并从那里向下搜索。

您应该将其替换为 ./ ,它将从当前节点进行搜索,./stat[@name='nickname']/text()

在你的foreach中尝试:

string nickname = node.SelectSingleNode("stat[@name='nickname']").InnerText;
mylist.Add(nickname);