To select XML Nodes with Namespace we have to use type XmlNamespaceManager. The AddNamespace() method of XmlNamespaceManager object takes two arguments: one is prefix and the second is the Uri.
Let's say we have following xml:
<md:ProductOutput xmlns:cb="http://mydomain.com/report/"> <md:Header> <md:Child1 SubjectStatus=""> Some text for Child1 </md:Child1> </md:Header> <md:Body DocumentID="356d6d32-5755-4ffb-a8b8-8932577526dd"> <md:Child2> Some test for Child2 </md:Child2> </md:Body> </md:ProductOutput>
Using XmlDocument:
When selecting nodes from XmlDocument object, you have to use an instance of XmlNamespaceManager class. To select the node md:Header, we will pass the XmlNamespaceManager's instance to SelectSingleNode method of XmlDocument.
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xmlString); // xmlString variable contains above xml
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDocument.NameTable);
nsmgr.AddNamespace("md", "http://mydomain.com/report/");
XmlNode nodeHeader = xmlDocument.SelectSingleNode("//md:Header", nsmgr);
//nodeHeader contains the required node
Using XDocument:
To select the node elemment from XDoocument, we have to concatenate node name (Header) with the XNamespace and pass this to Element() method of XDocument.Root Element.
var xdoc = XDocument.Parse(xmlString); // xmlString variable contains above xml XNamespace ns = "http://mydomain.com/report/"; var elementHeader = xdoc.Root.Element(ns + "Header"); //elementHeader contains the required element
No comments:
Post a Comment