通过XmlNodeList迭代,值始终相同

let*_*ynx 8 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>
Run Code Online (Sandbox Code Playgroud)

我试图使用下面的代码提取nickName和level的值:

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);
}
Run Code Online (Sandbox Code Playgroud)

问题是,虽然我可以看到使用下一组数据更新节点对象,但返回的值始终与第一个昵称相同.

所以nodeNickName.Value总是等于"lethallynx".

有任何想法吗?

Mon*_*ong 14

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

你应该将它替换为a ./,它从当前节点获取搜索,如./stat[@name='nickname']/text()