Предположим, у меня есть XmlElement
; давайте назовем это element
. Если я хочу получить все дочерние узлы этого элемента, я могу вызвать element.ChildNodes
. Если мне нужен текст элемента и всех его дочерних элементов , тогда я могу перейти с element.InnerText
.
Однако предположим, что у меня есть какой-то XML, который выглядит следующим образом:
<TopElement attr1="value1" attr2="value2">
This is the text I want.
<ChildElement1>This is text I don't want.</ChildElement1>
<ChildElement2>This is more text I don't want.</ChildElement2>
</TopElement>
Если я пойду с element.InnerText
, я получу следующее:
Это текст, который я хочу. Это текст, который я
не хочу. Это больше текста, я не
хочу.
Если мне нужен только текст внутри TopElement, но НЕ его дочерние элементы, я могу сделать это:
Dim txt As String
For Each child As Xml.XmlNode In XmlElement.ChildNodes
If TypeOf child Is Xml.XmlText Then
txt = child.InnerText
Exit For
End If
Next
Но мне это кажется довольно глупым. Конечно, есть лучший способ?
РЕДАКТИРОВАТЬ : Извините, я не указал это изначально: я ищу решение, не связанное с LINQ (здесь мы находимся в мрачном веке с .NET 2.0).