Selecting from an XmlNode using XmlNamespaceManager
.net, c#, xml
Solution
Can you use
XPathNavigator nav = XmlNode.CreateNavigator();
XmlNamespaceManager man = new XmlNamespaceManager(nav.NameTable);
Including the rest in case it'll be helpful:
man.AddNamespace("app", "http://www.w3.org/2007/app"); //Gotta add each namespace
XPathNodeIterator nodeIter = nav.Select(xPathSearchString, man);
while (nodeIter.MoveNext())
{
var value = nodeIter.Current.Value;
}
http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.createnavigator.aspx
Problem
I have been looking for ages to find a way to select nodes from an `XmlNode`(NOT AN `XmlDocument`) which has multiple namespaces. Almost every post that I have searched has advised me to use an `XmlNamespaceManager`, however, `XmlNamespaceManager` needs an `XmlNameTable` which does not exists for an `XmlNode`. I tried doing this with an `XmlDocument` and it worked since `XmlDocument` has a property `XmlDocument.NameTable` but it does not exists for XmlNode. I tried creating a NameTable manually but it does not work as the same piece of code works when I use an `XmlDocument`. I guess I need to populate that NameTable with something or somehow bind it to the `XmlNode` to make this work. Please suggest.