如何获取 System.Xml.Linq.XNode 的名字?
How to get name of System.Xml.Linq.XNode?
每个 XML 元素,如 <title />
都有一个名称 - "title"。
我使用 foreach 枚举 XNode.Nodes() 方法提供的项目,并按标签名称处理每个项目。
我将 XNode 转换为 XElement,以访问 XElement.Name.LocalName 属性以获取标签名称,如 "title".
foreach(XElement as_element in doc.Nodes())
在我尝试解析这个标签后出现了问题:
<title>"Some text"</title>
现在它的类型是 XText (: XNode),我无法将它转换为 XElement。我得到一个 InvalidCastException。
我怎样才能得到 XNode 的 "name"?
INode 并不总是有名字的。最好使用Elements()
而不是Nodes()
来枚举XElement内部的子元素,那么我们有一个IEnumerable<XElement>
.
如果你有一个元素类型的节点,你可以投它:
if (node.NodeType == XmlNodeType.Element) {
var el = (XElement)node;
Console.WriteLine(el.Name);
}
每个 XML 元素,如 <title />
都有一个名称 - "title"。
我使用 foreach 枚举 XNode.Nodes() 方法提供的项目,并按标签名称处理每个项目。
我将 XNode 转换为 XElement,以访问 XElement.Name.LocalName 属性以获取标签名称,如 "title".
foreach(XElement as_element in doc.Nodes())
在我尝试解析这个标签后出现了问题:
<title>"Some text"</title>
现在它的类型是 XText (: XNode),我无法将它转换为 XElement。我得到一个 InvalidCastException。 我怎样才能得到 XNode 的 "name"?
INode 并不总是有名字的。最好使用Elements()
而不是Nodes()
来枚举XElement内部的子元素,那么我们有一个IEnumerable<XElement>
.
如果你有一个元素类型的节点,你可以投它:
if (node.NodeType == XmlNodeType.Element) {
var el = (XElement)node;
Console.WriteLine(el.Name);
}