如何使用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元素文本内容的字符串。

最新更新