Easy XPathNavigator GetAttribute

c#, xml, xpathnavigator

Solution

Two problems here are:

(1) Your path is selecting the `thisnode` element, but the `thiselement` element is the one with the attributes and (2) `.Select()` does not change the location of the `XPathNavigator`. It returns an `XPathNodeIterator` with the matches.

Try this:

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);
}

Problem

Just getting started here with my first take at `XPathNavigator`. This is my simple xml: ``` <?xml version="1.0" encoding="utf-8" standalone="yes"?> <theroot> <thisnode> <thiselement visible="true" dosomething="false"/> <another closed node /> </thisnode> </theroot> ``` Now, I am using the `CommonLibrary.NET` library to help me a little: ``` 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); } ``` Problem is that it can't find the attribute. I've looked through the documentation at MSDN for this, but can't make much sense of what's happening.

Original source

Related problems