代码之家  ›  专栏  ›  技术社区  ›  Ranhiru Jude Cooray

XPath查询总是只在SingleNodeSelect中的某些查询上返回NULL

  •  1
  • Ranhiru Jude Cooray  · 技术社区  · 16 年前
    <?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()]

    但是,下面的函数总是返回null。它与XPathVisualizer配合得非常好,我还与一个在线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;            
    }
    

    2 回复  |  直到 16 年前
        1
  •  2
  •   philiphobgen    16 年前

    XPathQuery 我想你需要引用这些数字。 这样地:

    string XPathQuery = "//user[@number=\"" + Number + "\"]/step[@stepnumber=\"" + StepNumber + "\"]";
    
        2
  •  2
  •   Marc Gravell    16 年前

    或许可以加上额外的引号?

    string XPathQuery = "//user[@number='" + Number + "']/step[@stepnumber='"
              + StepNumber + "']";
    

    Number StepNumber . 基本上:什么是 实际的