首页 > 解决方案 > 如何根据包含在非唯一 XMLTag 中的唯一值定义智能 xPath,以便与 C# 中的 XmlNode.SelectNodes() 方法一起使用?

问题描述

我有一个 XML 结构:

<Node>
    <SubId> 15 </SubId>
    <SubParam> someValue </SubParam>
</Node>
<Node>
    <SubId> 19 </SubId>
    <SubParam> someValue </SubParam>
</Node>
<Node>
    <SubId> 22 </SubId>
    <SubParam> someValue </SubParam>
</Node>

如果该节点中的 SubId 标记的值为 15,我想选择该节点。

我当前的代码:

if (xPath.Contains("Node"))
{
    XmlNodeList fieldsToTest = root.SelectNodes(xPath);
    foreach (XmlNode field in fieldsToTest)
    {
        if (field.SelectSingleNode("SubId").InnerText.Equals("15"))
        {
          do something;
        } 
    }
}

有没有办法直接选择 SubId 为“15”的节点而不选择所有节点元素然后遍历列表?我的猜测是必须有一种方法为此目的定义智能 xPath。

标签: c#.netxmlxpath

解决方案


只需使用这个 XPath:

//Node[SubId = 15]

推荐阅读