Я новичок в VB6 и должен разобрать документ XML с различной глубиной тегов, как в следующем примере:как разобрать XML-файл в VB6 рекурсивной
<start>
<b>text1</b>
<c>
<c1>
<d>text</d>
</c1>
</c>
</start>
Я использую MSXML и пытаясь решить эту проблему рекурсивной. Мой код:
Sub1()
Set objXML = CreateObject("Msxml.DOMDocument")
objXML.async = True
objXML.Load "text.xml"
Dim nodeList As IXMLDOMNodeList
Dim node As IXMLDOMNode
Set nodeList = objXML.selectNodes("*")
For Each node In nodeList
print node.nodeName ' this works'
printNode (node) 'here is the problem explained below'
Next node
End Sub
Sub printNode(node As IXMLDOMNode)
Dim xmlNode As IXMLDOMNode
If node.hasChildNodes Then
For Each xmlNode In node.childNodes
printNode (xmlNode)
Next xmlNode
Print node.nodeName
End If
End Sub
Проблема заключается в том, что это не представляется возможным назвать суб printNode с узлом параметра от типа IXMLDOMNode. Когда я пытаюсь запустить программу, которую я всегда получаю RuntimeError 438 который говорит объект не поддерживает эту функцию
Узел существует, я проверил это и могу напечатать имя и значение узла.
Может ли кто-нибудь объяснить мне, почему и дать мне подсказку как/решение, как я могу решить эту проблему?
Вы ничего не разбираете. Вы уже просили MSXML выполнить синтаксический анализ. То, с чем вы, похоже, боретесь, - это пересечение DOM. – Bob77
Вы правы. Спасибо, что поправил меня, мое распоряжение не совсем корректно. Проблема заключалась в прохождении DOM – moony