【发布时间】:2012-03-07 12:28:48
【问题描述】:
给定一个 XElement 加载
var root = XElement.Load("foo.xml");
如何枚举 XML 文件中使用的命名空间?
【问题讨论】:
标签: .net xml .net-4.0 linq-to-xml
给定一个 XElement 加载
var root = XElement.Load("foo.xml");
如何枚举 XML 文件中使用的命名空间?
【问题讨论】:
标签: .net xml .net-4.0 linq-to-xml
没有什么可以为您提供直接使用的所有命名空间,因此您必须枚举所有元素并提取它们的命名空间:
var namespaces = root.DescendantsAndSelf()
.Select(e => e.Name.Namespace)
.Distinct();
这将只为您提供文档中元素使用的命名空间。如果要列出文档中声明的所有命名空间(即使它们未使用或仅由属性使用),则需要迭代命名空间声明:
var namespaces = root.DescendantsAndSelf()
.Attributes()
.Where(a => a.IsNamespaceDeclaration)
.Select(a => (XNamespace)a.Value)
.Distinct();
【讨论】: