Easy XPathNavigator GetAttribute

刚刚开始我的第一次参加XPathNavigator

这是我的简单xml:

        

现在,我使用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); } 

您可以像这样使用xpath选择元素的属性(上面接受的答案的替代方法):

 public static XmlDocument theXML = XmlUtils.LoadXMLFromFile(PathToXMLFile); const string thexpath = "/theroot/thisnode/thiselement/@visible"; public static void test() { XPathNavigator xpn = theXML.CreateNavigator(); XPathNavigator thisAttrib = xpn.SelectSingleNode(thexpath); string thisstring = thisAttrib.Value; System.Windows.Forms.MessageBox.Show(thisstring); }