Не обрабатывать дочерние узлы (используя "SelectNodes")

Пример XML;

<root>
  <cmdset>Set 1
    <cmd>Command 1</cmd>
  </cmdset>
  <cmdset>Set 2
    <cmd>Command 2</cmd>
  </cmdset>
</root>

Я только хочу вытащить текст изнутри <cmdset> теги. Пример кода;

Sub Main()
        Dim doc As XmlDocument = New XmlDocument()
        doc.Load("help.xml")
        For Each Element As XmlElement In doc.SelectNodes("//cmdset")
            Console.WriteLine(Element.InnerText)
        Next
        Console.Read()
    End Sub

Токовый выход;

Set 1
    Command 1
Set 2
    Command 2

Желаемый результат;

Set 1
Set 2

Спасибо вам пожалуйста

1 ответ

Решение

Вам нужно будет выбрать только текстовое содержимое с помощью XPath text() функция, например:

For Each textNode As XmlText In doc.SelectNodes("//cmdset/text()")
    Console.WriteLine(textNode.InnerText)
Next

Обратите внимание, что я также изменил итератор из XmlElement переменная к XmlText переменная, так как текстовое содержимое в XML-документе рассматривается не как узлы элемента, а как текстовые узлы.

Другие вопросы по тегам