2015-01-03 27 views
8

Każdy element XML, taki jak <title />, ma nazwę - "tytuł". Używam foreach do wyliczenia pozycji dostarczonych przez XNode.Nodes() i obsłużyć każdą z nich według nazwy znacznika.Jak uzyskać nazwę System.Xml.Linq.XNode?

Przesyłam XNode do XElement, aby uzyskać dostęp do właściwości XElement.Name.LocalName, aby uzyskać nazwę tagu, np. "Tytuł".

foreach(XElement as_element in doc.Nodes()) 

Problem pojawił się po próbowałem parsowania ten tag:

<title>"Some text"</title> 

Teraz jego typ jest XText (: XNode), a ja nie mogę rzucić go do Xelement. Otrzymuję wyjątek InvalidCastException. Jak mogę uzyskać "nazwę" XNode?

+1

co masz na myśli po nazwisku? Jaka powinna być nazwa "Some text"? to nie jest element, więc nie ma nazwy. –

+0

Nazwa znacznika) element, węzeł) to "tytuł". Potrzebuję tego w moim kodzie, ale XNode nie ma właściwości typu XName. – Croll

+0

masz na myśli, że musisz "tytuł" z "Some Text"? –

Odpowiedz

15

Igor nie zawsze ma nazwę. Lepiej używać Elements() zamiast Nodes(), aby wyliczyć elementy potomne w XElement, a następnie mamy IEnumerable<XElement>.