繁体   English   中英

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

[英]Get namespace from xml file C#

我浏览了标题相似的问题,但似乎无法准确找到我正在寻找的内容,如果有人发现类似的问题,请指出我的问题。这是我的问题:

我有一个像这样开头的 xsd 文件:

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

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

我尝试了以下方法,但是在调试elementNamespace变量的值为空""

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

Scott Hanselman 有一篇关于如何获取命名空间的文章:

http://www.hanselman.com/blog/GetNamespacesFromAnXMLDocumentWithXPathDocumentAndLINQToXML.aspx

那是因为默认命名空间为空/未指定。 你想要GetNamespaceOfPrefix

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

虽然老实说这没有多大意义 - 我不太确定你在追求什么。

这是我最终从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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM