1

在我正在进行的一个项目中,我刚刚为我的 XML 编写了一个 XSD,以便其他工程师可以更轻松地处理 XML。与此 XSD 一起出现的是 XML 名称空间。在我当前的解析代码中,我一直在使用这样的东西:

XElement element = xmlRoot.Element(XML.ELEMENT_NAME);

XML 是一个充满常量的类,在整个程序中用于 XML 输入和输出。但是,现在使用了命名空间,这不再起作用了。显而易见但几乎没有优雅的解决方案是进入并使所有解析代码看起来像这样:

XElement element = xmlRoot.Element(XML.NAMESPACE + XML.ELEMENT_NAME);

再想一想,去定义一个扩展方法来添加到这个命名空间并返回 XElement 看起来会好很多。这个想法会使代码看起来像这样:

XElement element = xmlRoot.GetMyElement(XML.ELEMENT_NAME);

到目前为止,这些想法是我用来处理命名空间问题的想法。基本上,我的问题是:
有没有更好的方法来解析具有已知常量命名空间的 XElements?如果是这样,它是什么?

4

1 回答 1

2

好吧,没有人提供替代方案,我已经在代码中实现了这一点。因此,我将继续并将其作为答案输入,以便我可以关闭它。

我继续使用自动添加到命名空间中的扩展方法。请注意,这仅在您有一个常量命名空间时才有效!否则,您可能只想在扩展方法中添加另一个参数,以避免进行奇怪的命名空间连接。

      public static XElement
      GetNamespaceElement(this XElement element, string ns, string name)
      {
          XNamespace n = new XNamespace();
          n.NamespaceName = ns;
          return element.Element(n + name);
      }
于 2010-08-19T18:21:56.670 回答