尝试选择单个节点将返回错误“表达式必须计算为节点集”。

时间:2019-01-15 15:36:28

标签: c# asp.net xml xpath

我试图使用xpath选择单个节点,尽管使用了路径末尾的[1]选择器和XmlDocument.SelectSingleNode()函数来获取值,但它仍返回错误。在我的其他网络应用中,它起作用了。

我的xml文件:

<settings>
  <GUI>
    <Theme>Dark</Theme>
  </GUI>
  <Mgmt>
    <NotAdmin>
      <ViewItems>1</ViewItems>
      <EditItems>1</EditItems>
      <DeleteItems>0</DeleteItems>
      <MgmtPanel>0</MgmtPanel>
      <EditDB>0</EditDB>
      <EditRestric>0</EditRestric>
    </NotAdmin>
  </Mgmt>
 </settings>

我的C#代码:

XmlDocument SettingsXMLdoc = new XmlDocument();
string svrSettingsPath = 
HostingEnvironment.MapPath("~/App_Data/AppSettings.xml");
SettingsXMLdoc.Load(svrSettingsPath);
XmlNode node = 
SettingsXMLdoc.SelectSingleNode(//(/settings/Mgmt/NotAdmin/ViewItems) 
[1]);
return node.InnerText; 

它应该选择节点,但返回错误“表达式必须求值到一个节点集。”

2 个答案:

答案 0 :(得分:1)

这对我来说很好:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Your_path_here);
XmlNode oneNode = xmlDoc.SelectSingleNode("settings/Mgmt/NotAdmin/ViewItems");

答案 1 :(得分:1)

这是一条非常糟糕的错误消息,但是您的表达式在XPath 2.0下有效,但在XPath 1.0下无效。 XPath 1.0不允许在“ //”运算符后加括号的子表达式。