我有一个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”的节点,而不选择所有Node元素,然后遍历列表?我的猜测是必须有一种为此目的定义智能xPath的方法。
答案 0 :(得分:1)
只需使用此XPath:
//Node[SubId = 15]
答案 1 :(得分:1)
尝试以下表达式:
XmlNodeList fieldsToTest = root.SelectNodes("//Node[normalize-space(SubId) = '15']");
这应该选择示例XML文件的第一个Node
元素。