我有一个遗留的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文档中的类似帖子找到最佳实践。
感谢。
答案 0 :(得分:2)
继续使用XPath,例如node.selectSingleNode("data2").text
内的For Each
为您提供了一个包含data2
元素文本内容的字符串。