XElement及其属性

时间:2014-02-03 14:14:36

标签: c# xml linq xelement

我一直在寻找XName,XNamespace和amp;之间的澄清。来自msdn.microsoft.com的XElement.Name.LocalName示例说明

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

Q值。 Xelement必须具有命名空间吗?

当我使用它时:

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

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

(请尽可能澄清XElement.XName& XElement.XName.LocalName的差异和可能用途)

2 个答案:

答案 0 :(得分:5)

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

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

所以在你的例子中:

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

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

答案 1 :(得分:1)

  

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

没有

  

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

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