Ответ 1
INode не всегда имеет имя. Лучше использовать Elements()
вместо Nodes()
, чтобы перечислять дочерние элементы внутри XElement, тогда мы имеем IEnumerable<XElement>
.
Каждый элемент 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?
INode не всегда имеет имя. Лучше использовать Elements()
вместо Nodes()
, чтобы перечислять дочерние элементы внутри XElement, тогда мы имеем IEnumerable<XElement>
.
если у вас есть узел типа элемента, вы можете привести его:
if (node.NodeType == XmlNodeType.Element) {
var el = (XElement)node;
Console.WriteLine(el.Name);
}