刚刚开始我的第一次参加XPathNavigator.
这是我的简单xml:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <theroot> <thisnode> <thiselement visible="true" dosomething="false"/> <another closed node /> </thisnode> </theroot>
现在,我使用CommonLibrary.NET库来帮助我一点:
public static XmlDocument theXML = XmlUtils.LoadXMLFromFile(PathToXMLFile); const string thexpath = "/theroot/thisnode"; public static void test() { XPathNavigator xpn = theXML.CreateNavigator(); xpn.Select(thexpath); string thisstring = xpn.GetAttribute("visible",""); System.Windows.Forms.MessageBox.Show(thisstring); }
问题是它无法找到属性.我已经查看了MSDN上的文档,但是无法理解正在发生的事情.
解决方法
这里有两个问题:
(1)您的路径是选择thisnode元素,但thiselement元素是具有属性和的元素
(2).Select()不会改变XPathNavigator的位置.它返回带有匹配项的XPathNodeIterator.
试试这个:
public static XmlDocument theXML = XmlUtils.LoadXMLFromFile(PathToXMLFile); const string thexpath = "/theroot/thisnode/thiselement"; public static void test() { XPathNavigator xpn = theXML.CreateNavigator(); XPathNavigator thisEl = xpn.SelectSingleNode(thexpath); string thisstring = xpn.GetAttribute("visible",""); System.Windows.Forms.MessageBox.Show(thisstring); }