<?xml version="1.0" encoding="utf-16"?>
<users>
<user number="0772247157">
<step stepnumber="1">complete</step>
<step stepnumber="2">complete</step>
<step stepnumber="3">complete</step>
</user>
<user number="0772247158">
<step stepnumber="1">complete</step>
<step stepnumber="2">complete</step>
</user>
<user number="0772247159">
<step stepnumber="1">complete</step>
</user>
</users>
查询如
//user[@number='0772243950']
并且//user[@number=0772243950]/step[last()]
使用 SelectSingleNode 方法可以毫无问题地工作。
但是,以下函数总是返回 null。它与 XPath Visualizer 完美配合,我使用在线 XPath 评估器进行了仔细检查。
public bool checkStepExists(string Number, string StepNumber)
{
string XPathQuery = "//user[@number=" + Number + "]/step[@stepnumber=" + StepNumber + "]";
XmlNode Search = SettingsFile.SelectSingleNode(XPathQuery);
if (Search == null)
return false;
else
return true;
}
在问这个问题之前,我在 SO 上进行了搜索,所有这些都指向命名空间问题。但我无法理解的是,这是一个没有命名空间的本地 XML 文件。或者,我应该总是有一个命名空间和一个前缀并使用它吗?