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

  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的区别和可能的用法)

最佳答案

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

XName基本上是完全限定的名称-而XName.LocalName仅给出本地部分。

因此,在您的示例中:


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


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

关于c# - XElement及其属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21529611/

10-12 02:15