Reputation: 2146
<Header>
<reference>
<identifier>BatchProcessed</identifier>
<datetime>2011-08-15T05:12:00+10:00</datetime>
</reference>
</Header>
<Header>
<reference>
<identifier>Running</identifier>
<datetime>2011-08-15T05:12:00+10:00</datetime>
</reference>
</Header>
my xpath query is
XmlNode node3 = xdoc.SelectSingleNode("//identifier/text()");
the query suppose to get the first identifier value " BatchProcessed".
but it returns null when i test but when i use the path in xml tool (online) it retruns value.
i don't know what am missing here,some one enlighten me
Upvotes: 0
Views: 268
Reputation: 67669
It looks like your xml document lacks a root element. I've added one <Root>
node to wrap the two <Header>
nodes. The code below shows how to retrieve the expected value BatchProcessed by leveraging your XPath request.
var xml = @"<Root><Header>
<reference>
<identifier>BatchProcessed</identifier>
<datetime>2011-08-15T05:12:00+10:00</datetime>
</reference>
</Header>
<Header>
<reference>
<identifier>Running</identifier>
<datetime>2011-08-15T05:12:00+10:00</datetime>
</reference>
</Header></Root>";
var xdoc = new XmlDocument();
xdoc.LoadXml(xml);
XmlNode node3 = xdoc.SelectSingleNode("//identifier/text()");
Console.WriteLine(node3.Value); // -> "BatchProcessed"
There's also a chance that the missing root node was bearing a default namespace (which adds a little level of complexity). The code below demonstrates how to tackle this.
var xml = @"<Root xmlns=""http://www.example.com/schemas/0.1""><Header>
<reference>
<identifier>BatchProcessed</identifier>
<datetime>2011-08-15T05:12:00+10:00</datetime>
</reference>
</Header>
<Header>
<reference>
<identifier>Running</identifier>
<datetime>2011-08-15T05:12:00+10:00</datetime>
</reference>
</Header></Root>";
var xdoc = new XmlDocument();
xdoc.LoadXml(xml);
var ns = new XmlNamespaceManager(new NameTable());
ns.AddNamespace("ns", "http://www.example.com/schemas/0.1");
XmlNode node3 = xdoc.SelectSingleNode("//ns:identifier/text()", ns);
Console.WriteLine(node3.Value); // -> "BatchProcessed"
Upvotes: 2