【问题标题】:XElement and it's attributesXElement 及其属性
【发布时间】:2014-02-03 14:14:35
【问题描述】:

我一直在寻找 XName 、 XNamespace 和 XElement.Name.LocalName 之间的澄清,来自 msdn.microsoft.com 的示例指出

  XNamespace ns = "http://www.adventure-works.com";
  XElement root = new XElement(ns + "Root", "content");
  Console.WriteLine(root.Name);

问。 Xelement 是否必须具有命名空间?

当我像这样使用它时:

 XElement xEle = XElement.Parse(xml);
 String tagName = xEle.Name.LocalName;

它给出了第一个元素的名称,为什么?

(如果可能,请说明 XElement.XName 和 XElement.XName.LocalName 的区别和可能用法)

【问题讨论】:

  • 命名空间是可选的。 XName 由命名空间和名称组成。你不明白什么?

标签: c# xml linq xelement


【解决方案1】:

XElement 有一个名称,表示为 XNameXName 可能有也可能没有与之关联的命名空间。如果没有,XName.Namespace 属性将返回 XNamespace.None

XName 是一个完全限定的名称,基本上 - 而XName.LocalName 只会给出本地部分。

所以在你的例子中:

  • 本地名称为Root
  • 命名空间URI是http://www.adventure-works.com

带命名空间的XName与不带命名空间(或不同命名空间)的XName 相同。因此,例如,Element(XName) 方法将找到具有指定本地名称但名称空间不同的元素。

【讨论】:

    【解决方案2】:

    问。 Xelement 一定要有命名空间吗?

    没有。

    它给出了第一个元素的名称,为什么?

    因为您正在解析 XML 并获取包含所有元素的根元素。所以它为您提供了 root 元素的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2011-05-01
      • 1970-01-01
      • 2012-08-19
      相关资源
      最近更新 更多