我一直在寻找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的差异和可能用途)
答案 0 :(得分:5)
XElement
有一个名称,表示为XName
。 XName
可能有也可能没有与之关联的命名空间。如果没有,XName.Namespace
属性将返回XNamespace.None
。
XName
基本上是一个完全限定的名称 - 而XName.LocalName
只会提供本地部分。
所以在你的例子中:
Root
http://www.adventure-works.com
具有命名空间的XName
不与没有命名空间(或具有不同命名空间)的XName
相同。例如,Element(XName)
方法将不找到具有指定本地名称但名称不同的名称的元素。
答案 1 :(得分:1)
Q值。 Xelement是否必须具有命名空间?
没有
它给出了第一个元素的名称,为什么?
因为您正在解析XML并获取包含所有元素的根元素。因此它会为您提供root
元素的名称。