不处理子节点(使用“SelectNodes”)

时间:2013-02-19 20:14:32

标签: xml vb.net parent-node

示例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 个答案:

答案 0 :(得分:1)

您需要使用XPath text()函数仅选择文本内容,例如:

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

请注意,我还将迭代器从XmlElement变量更改为XmlText变量,因为XML文档中的文本内容不被视为元素节点,而是文本节点。