从XML文件中获取命名空间 C#

12

我查看了类似标题的问题,但好像找不到确切的答案。如果有人发现了相似的问题,请指向该线程。这是我的问题:

我有一个 xsd 文件,开头如下所示:

Beginning of my xsd file 我需要知道如何以编程方式访问上述文件的命名空间值。

此外,我的解决方案需要通用,因此我不能简单地搜索xmlns:xs,因为命名空间的确切名称可能与此不同。

我尝试过以下方法,但在调试时,elementNamespace变量的值为空白"":

XElement elemet = XElement.Load(@"D:\xsd\Response.xsd");
string elementNamespace = elemet.GetDefaultNamespace().NamespaceName;
System.Diagnostics.Debug.WriteLine("Namespace " + elementNamespace);

你在element中缺少了一个'n'。string elementNamespace = element.GetDefaultNamespace().NamespaceName; - Matt Bussing
3个回答

17

谢谢提供的链接,我使用了LINQ to XML方法。 - Denys Wessels

6

这是因为默认命名空间为空/未指定。我猜测您想要使用GetNamespaceOfPrefix

string elementNamespace = elemet.GetNamespaceOfPrefix("xs").NamespaceName;

老实说,这并没有太多意义 - 我真的不确定你想要什么。


1

以下是我从Scott Hanselman的文章中采用的内容

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);
}

通常我需要的命名空间在字典的第二个元素的值中,我可以这样访问它:
var namespace = GetXmlNamespaces("myfile.xml").ElementAt(1).Value;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接