【问题标题】:How can I enumerate the Namespaces used in an XML document with Linq2XML?如何使用 Linq2XML 枚举 XML 文档中使用的命名空间?
【发布时间】:2012-03-07 12:28:48
【问题描述】:

给定一个 XElement 加载

var root = XElement.Load("foo.xml");

如何枚举 XML 文件中使用的命名空间?

【问题讨论】:

    标签: .net xml .net-4.0 linq-to-xml


    【解决方案1】:

    没有什么可以为您提供直接使用的所有命名空间,因此您必须枚举所有元素并提取它们的命名空间:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 2011-10-28
      • 2011-09-12
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 2020-07-01
      相关资源
      最近更新 更多