Selecting XML nodes defined with namespaces
While isolating nodes with custom namespace definition, it might be problematic to retrieve the nodes using XPath (SelectSingleNode or SelectNodes methods). Because if the target XML document contains a URN prefix in the node, that has to be defined and explicitly and specified in the SelectSingleNode call. Here is the way to get it into work.
XmlNamespaceManager nsmgr=null; //Declare Namespace manager to track all URNs and prefixes used in target document.
try
{
nsmgr=new XmlNamespaceManager(xdoc.NameTable); //xdoc contains the returned SOAP envelope if successfulnsmgr.AddNamespace("prfx", "https://MyURN.com/"); //add entry about the custom prefix
nsmgr.AddNamespace("soap", "https://schemas.xmlsoap.org/soap/envelope/"); //add entry about default soap prefix available in the SOAP envelope.
}
catch(NullReferenceException nex){Console.WriteLine(nex.Message);} //In case the XML doc wasn’t accessibleXmlNode result = xdoc.SelectSingleNode("//prfx:Operation",nsmgr); //result will now contain the prfx:Operation element or attribute as the case may be.