如何使用 XPath 按名称高效地 select 子元素?

How can I efficiently select child elements by name, using XPath?

我有一个遗留的 VB6 程序,需要解析 XML。通过阅读这个优秀站点中的几个相关主题,我发现使用 MSXML dll 是加载 XML 并能够解析它的方法。我也曾尝试浏览 MSDN MSXML 文档来找到我的答案,但发现很难。我觉得答案很简单,但一些指示会大有帮助。

例如,这是我的 XML 结构的要点:

<response>
  <header>
    : :
  </header>
  <result>
    <record>
      <data1>some text</data1>
      <data2>some text</data2>
        :   :
      <dataN>some text</dataN>
    </record>
     : : multiple records with data
  </result>
</response>

我想处理所有记录,并从每个记录中按名称提取某些数据子项。

我知道如何从文档中获取 IXMLDOMNodeList 以获取记录,但不确定在每条记录上按名称获取数据行的最佳方式。这是我的 VB6 代码。

Dim doc as New MSXML2.DOMDocument

if doc.Load(myURL) Then
  Dim nodeList as MSXML2.IXMLDOMNodeList, node as MSXML2.IXMLDOMNode

  Set nodeList = doc.selectNodes("/response/result/record")
  For Each node in nodeList
    'How do I get the child element with name "data2" from the list of children?
  Next node
end if

在每个记录的 For/Each 循环中,我想访问名称为 "dataN" 的子元素,例如。我知道我可以遍历 node.childNodes 并检查是否 childNode(i).baseName = "dataN",但这似乎效率不高。但是我似乎找不到一种方法可以让我通过名称找到这些子节点。

正如我所说,可能是一个简单的答案,但我似乎无法从本网站或 MSXML 文档中的类似帖子中找到最佳实践。

谢谢。

继续使用 XPath,例如For Each 中的 node.selectSingleNode("data2").text 为您提供了一个包含 data2 元素文本内容的字符串。