Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XPath查询始终仅在SingleNodeSelect中的某些查询上返回NULL_C#_Xpath_Null_Selectsinglenode - Fatal编程技术网

C# XPath查询始终仅在SingleNodeSelect中的某些查询上返回NULL

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

在问这个问题之前,我搜索了这么多,所有这些都指向了名称空间问题。但我不能理解的是,这是一个没有名称空间的本地XML文件。或者,我应该总是有一个名称空间和一个前缀并使用它吗?

也许可以尝试使用额外的引号

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