Я смог заставить его работать, собрав нужные мне узлы с помощью
xmlDoc.documentElement.selectNodes(strQuery)
Затем зацикливая те, которые были для каждого цикла. Для этого я создал дополнительную функцию, которую передал objNode.xml
, и создал дополнительный временный xmlDOM, а затем обнаружил, была ли там нужная мне строка и, если это так, вытащил ее.
Function ProcessXML(strXMl)
Dim xmlDoc,strQT, strQC,type,code, ty
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.loadXML(strXML)
strQT = "//StandardLine/Stan/Type"
strQC = "//StandardLine/Stan/Code"
set ty = xmlDoc.documentElement.selectSingleNode(strQT)
if not(ty is nothing) then
type = ty.text
else
type = -1
end if
if type = 1 then
code = xmlDoc.documentElement.selectSingleNode(strQC).text
else
Code = -1
end if
ProcessXML = Code
End Function
Dim xmlDoc, nodes, strQuery, objNode
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
'This is inputing the xml as a string from a previous bit of code
xmlDoc.loadXML(XMLOut)
strQuery = "//Detail/StandardLine"
Set nodes = xmlDoc.documentElement.selectNodes(strQuery)
'Check to see if this xmlDoc has any of the desired SL nodes
If nodes.length = 0 Then
msgbox "There are no SLine nodes",,"The checker"
exit function
End If
'Will only get this far if there is a SLine node
msgbox "Before Nodes" & vbCrLf & nodes.length,,"Pre loop"
' Will go through each SLinenodes
For Each objNode in nodes
Dim Code
msgbox "I am in the loop!",,"The box...in the loop"
Code = ProcessXML(objNode.xml)
'Will be functions here later to use the variable Code
msgbox "Number is: " & Code,,"Thereas the number?"
Next
msgbox "After Nodes",,"Post loop"
Проблема Iбыло до того, как я пытался использовать методы выбора для того, что было элементом IXMLDOME, которые я думаю из IXMLDOMDocuments. Чтобы обойти это, я создал новые IXMLDOMDocuments из IXMLDOMElements. Это то, что я думаю. ИДК, если это только я, но получить документацию по VBS для этого было сложно, как f. Я получал фрагменты кода javascript или c ++ из документации Microsoft и не смог найти таблицу, показывающую методы для элементов IXMLDOME.