我试图使用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;
它应该选择节点,但返回错误“表达式必须求值到一个节点集。”
答案 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不允许在“ //”运算符后加括号的子表达式。