Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get namespace from xml file C#

Tags:

c#

xml

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:

Beginning of my xsd file 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);
like image 724
Denys Wessels Avatar asked Nov 23 '11 12:11

Denys Wessels


1 Answers

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;
like image 99
Matthew Lock Avatar answered Nov 15 '22 22:11

Matthew Lock