I've browsed the questions with similar titles but cannot seem to find exactly what I'm looking for,if anyone spotted a similar question kindly point me to the thread.Here is my question:
I have an xsd file which starts of like this:
I need to know how to programatically access the namespace value of the above file.
Additionally my solution needs to be generic so I cannot simply search for xmlns:xs
because the exact name of the namespace may have a different name
I've tried the following, but when debugging the value of the elementNamespace
variable is blank ""
:
XElement elemet = XElement.Load(@"D:\xsd\Response.xsd");
string elementNamespace = elemet.GetDefaultNamespace().NamespaceName;
System.Diagnostics.Debug.WriteLine("Namespace " + elementNamespace);
Here's what I ended up using from the Scott Hanselman article
public static IDictionary<string, string> GetXmlNamespaces(string sourcePath)
{
XDocument y = XDocument.Load(sourcePath);
XPathNavigator foo = y.CreateNavigator();
foo.MoveToFollowing(XPathNodeType.Element);
return foo.GetNamespacesInScope(XmlNamespaceScope.All);
}
Usually the namespace I want is in the value of the 2nd element of the dictionary which I access like so:
var namespace = GetXmlNamespaces("myfile.xml").ElementAt(1).Value;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With