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