Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取System.Xml.Linq.XNode的名称?_C#_Xml_Casting - Fatal编程技术网

C# 如何获取System.Xml.Linq.XNode的名称?

C# 如何获取System.Xml.Linq.XNode的名称?,c#,xml,casting,C#,Xml,Casting,每个XML元素,如都有一个名称——“title”。 我使用foreach枚举XNode.Nodes()方法提供的项,并按标记名处理每个项 我将XNode强制转换为XElement,以访问XElement.Name.LocalName属性以获取标记名,如“title” 尝试分析此标记后出现问题: <title>"Some text"</title> “一些文本” 现在它的类型是XText(:XNode),我无法将其强制转换为XElement。我有一个残疾例外。 如何获取

每个XML元素,如
都有一个名称——“title”。 我使用foreach枚举XNode.Nodes()方法提供的项,并按标记名处理每个项

我将XNode强制转换为XElement,以访问XElement.Name.LocalName属性以获取标记名,如“title”

尝试分析此标记后出现问题:

<title>"Some text"</title>
“一些文本”
现在它的类型是XText(:XNode),我无法将其强制转换为XElement。我有一个残疾例外。
如何获取XNode的“名称”?

INode并不总是有名称。最好使用
Elements()
而不是
Nodes()
,来枚举XElement中的子元素,然后我们有一个
IEnumerable
如果您有一个元素类型的节点,您可以强制转换它:

if (node.NodeType == XmlNodeType.Element) {
    var el = (XElement)node;
    Console.WriteLine(el.Name);
}

你的名字是什么意思?“某些文本”的名称应该是什么?它不是元素,所以没有名称。标记的名称)元素,节点)是“标题”。我在代码中需要它,但是XNode没有XName类型的属性。你是说你需要从“一些文本”中获取“标题”?如果你不想使用节点,那么就不要使用节点,使用元素或子体方法。没有标题与此无关。标题是另一个节点,它是一个元素节点,与“某些文本”完全分离。它只是“某些文本”的父节点。所以它有一个名字,因为它是一个元素。文本节点没有任何名称。如果您想迭代所有节点,包括文本,如果它是您想知道其名称的元素,该怎么办?找到任何打开的XML数据集,用您的代码编写嵌套循环,您将为自己提供所需的一切。
if (node.NodeType == XmlNodeType.Element) {
    var el = (XElement)node;
    Console.WriteLine(el.Name);
}