C# XPath查询始终仅在SingleNodeSelect中的某些查询上返回NULL
在问这个问题之前,我搜索了这么多,所有这些都指向了名称空间问题。但我不能理解的是,这是一个没有名称空间的本地XML文件。或者,我应该总是有一个名称空间和一个前缀并使用它吗?也许可以尝试使用额外的引号C# XPath查询始终仅在SingleNodeSelect中的某些查询上返回NULL,c#,xpath,null,selectsinglenode,C#,Xpath,Null,Selectsinglenode,在问这个问题之前,我搜索了这么多,所有这些都指向了名称空间问题。但我不能理解的是,这是一个没有名称空间的本地XML文件。或者,我应该总是有一个名称空间和一个前缀并使用它吗?也许可以尝试使用额外的引号 public bool checkStepExists(string Number, string StepNumber) { string XPathQuery = "//user[@number=" + Number + "]/step[@stepnumber=" + StepNumbe
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;
}
我也会有兴趣检查是否有任何空白添加周围的数字或StepNumber。基本上:您传入的实际字符串查询是什么?在连接等之后。也许可以尝试使用额外的引号
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;
}
我也会有兴趣检查是否有任何空白添加周围的数字或StepNumber。基本上:您传入的实际字符串查询是什么?在字符串XPathQuery中串联等之后,我认为您需要引用数字。
像这样:
string XPathQuery = "//user[@number='" + Number + "']/step[@stepnumber='"
+ StepNumber + "']";
在字符串XPathQuery中,我认为您需要引用这些数字。
像这样:
string XPathQuery = "//user[@number='" + Number + "']/step[@stepnumber='"
+ StepNumber + "']";
向返回空值的checkStepExists方法传递什么值??XML命名空间与XML文件是否为本地文件无关。XML名称空间是文件内部的内容—本地或远程。如果XML文件上有一个XML名称空间,则必须考虑并注意它。但是,如果你没有任何XML名称空间,你就不能为了安全而有一个名称空间——要么你有一个名称空间并尊重它,要么你没有任何名称空间且不需要它——对我来说,这实际上是一个愚蠢的错误。我有两个版本的XML文件,其中一个版本名为stepnumber,另一个版本名为just number,我查询的XML文件不正确。他们看起来几乎一样。很抱歉:您将哪些值传递到返回空值的checkStepExists方法中??XML命名空间与XML文件是否为本地文件无关。XML名称空间是文件内部的内容—本地或远程。如果XML文件上有一个XML名称空间,则必须考虑并注意它。但是,如果你没有任何XML名称空间,你就不能为了安全而有一个名称空间——要么你有一个名称空间并尊重它,要么你没有任何名称空间且不需要它——对我来说,这实际上是一个愚蠢的错误。我有两个版本的XML文件,其中一个版本名为stepnumber,另一个版本名为just number,我查询的XML文件不正确。他们看起来几乎一样。我的道歉:标记phil的答案,因为它实际上帮助我找到了错误:标记phil的答案,因为它实际上帮助我找到了错误:实际上XPath似乎可以原谅是否包含“”。谈论SQL:实际上XPath似乎可以原谅是否包含了“”。谈论SQL:P