【问题标题】:How can I get all node attributes and values using Xpath?如何使用 Xpath 获取所有节点属性和值?
【发布时间】:2011-05-15 23:55:36
【问题描述】:

我有以下 XML:

<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>

我正在尝试获取 stat "nickname" 的值。

我尝试使用:

XmlNodeList nodes = doc.SelectNodes("//@name");

获取所有具有属性的节点,但我似乎无法访问它们的值。

谁能指出我正确的方向?

【问题讨论】:

    标签: c# .net xml xpath


    【解决方案1】:

    如果你只是想获取 stat "nickname" 的值,那么你可以这样写:

    XmlNode node = doc.SelectSingleNode("//stat[@name='nickname']/text()");
    Console.WriteLine(node.Value); // "lethallynx"
    

    解释:

    • //stat 部分返回文档中所有&lt;stat&gt; 元素的列表。
    • [@name='nickname'] 部分根据 name 属性过滤此列表,因此在这种情况下,您最终只会得到一个元素。
    • /text() 部分选择此 &lt;stat&gt; 元素内的文本节点。

    【讨论】:

    • 干杯,这正是我需要的!
    【解决方案2】:

    您的命令正在选择名称的所有属性。试试这个来获取所有具有 name 属性的元素:

    doc.SelectNodes("//*[@name]");
    

    【讨论】:

    • 这让我得到了值,但现在我找不到该属性等于什么。我想要做的是获取“昵称”和其他字段的值。最好只有多个 Xpath 查询还是遍历单个查询返回的节点?
    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    相关资源
    最近更新 更多