Thank you. I now realize that ITEM in the For...Next isn't a keyword- I thought it was. Anyway, I've modified my approach so that I can display the full sequence of nodes in the file, but I'm not getting results I expect.
As you can see in the code, I built on your idea and am now using a repetitive function call.
Below is XML schema which I'm trying to iterate through node by
node. The script I'm using is also shown below. The resulting output,
also shown below, shows that I'm not reaching the element "tblTestCase"
nor the attribute names "TeamID" and "ProdID". How should I change my
script to make it follow the nodes all the way through?
Thanks,
Gregg
Please note that I've modified the XML for brevity and also so that it
isn't read as xml code by the post.
-
xsd:schema
-
targetNamespace="http://schemas.microsoft.com/office/infopath/2003/ado/d
-
ataFields" elementFormDefault="unqualified"
-
attributeFormDefault="unqualified"
-
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-
xmlns:d="http://schemas.microsoft.com/office/infopath/2003/ado/dataField
-
s"
-
xsd:element name="tblTestCase"
-
xsd:complexType
-
xsd:attribute name="TeamID" use="optional"
-
xsd:simpleType
-
xsd:restriction base="xsd:string"
-
xsd:maxLength value="10"/
-
/xsd:restriction
-
/xsd:simpleType
-
/xsd:attribute
-
xsd:attribute name="ProdID" use="optional"
-
xsd:simpleType
-
xsd:restriction base="xsd:string"
-
xsd:maxLength value="10"/
-
/xsd:restriction
-
/xsd:simpleType
-
/xsd:attribute
-
OUTPUT FILE:
-
NodeName NodeType
-
++++++++ ++++++++++
-
mso-application progid="InfoPath.Document" 7
-
dfs:myFields 1
-
dfs:queryFields 1
-
dfs:queryFields 1
-
#text 3
-
dfs:dataFields 1
-
#text 3
-
my:FileAttachment 1
-
#text 3
-
my:PassFail 1
-
#text 3
-
-
set oNodeList = root.childnodes
-
MoreNodes = True
-
Do While MoreNodes
-
i = 0
-
Display_NodeList oNodeList, i, MoreNodes
-
-
Loop
-
-
Sub Display_NodeList(varNodeList, varIndex, boolMoreNodes)
-
boolMoreNodes = False
-
For Each Item In varNodeList
-
varIndex = varIndex + 1
-
if varIndex < varNodeList.length then
-
strTextLine=varNodeList.item(varIndex).nodename & " " &
-
varNodeList.item(varIndex).nodevalue & " " &
-
varNodeList.item(varIndex).nodetype
-
write_lines strTextLine
-
'msgbox "Listing the EXISTING nodes"
-
'MsgBox varNodeList.item(varIndex).nodename & " " &
-
varNodeList.item(varIndex).nodevalue & " " &
-
varNodeList.item(varIndex).nodetype
-
If varNodeList.item(varIndex).hasChildNodes() then
-
boolMoreNodes = True
-
MsgBox varNodeList.item(varIndex).nodename & "has child
-
nodes"
-
IF varNodeList.length = 9 then
-
do while i3 < 9
-
i3 = i3 + 1
-
strTextLine=varNodeList.item(i3).nodename & " " &
-
varNodeList.item(i3).nodevalue & " " & varNodeList.item(i3).nodetype
-
write_lines strTextLine
-
loop
-
'msgbox varNodeList.item(1).nodename
-
'msgbox varNodeList.item(2).nodename
-
'msgbox varNodeList.item(3).nodename
-
'msgbox varNodeList.item(4).nodename
-
'msgbox varNodeList.item(5).nodename
-
'msgbox varNodeList.item(6).nodename
-
'msgbox varNodeList.item(7).nodename
-
'msgbox varNodeList.item(8).nodename
-
'msgbox varNodeList.item(9).nodename
-
end if
-
'set oNodeList2 =
-
root.getelementsbytagname(oNodeList.item(i).nodename)
-
set varNodeList = varNodeList.item(varIndex).childnodes
-
varIndex=0
-
'set oNodeList2 =
-
oNodeList.selectnodes(oNodeList.item(i).nodename)
-
'set oNodeList2 =
-
root.selectnodes(oNodeList.item(i).nodename)
-
end if
-
if varNodeList.item(varIndex).nodeType = 3 then
-
MsgBox "TEXT NODE: " & varNodeList.item(varIndex).nodename &
-
" " & varNodeList.item(varIndex).nodevalue & " " &
-
varNodeList.item(varIndex).nodetype
-
MSGBOX varNodeList.item(varIndex).text
-
end if
-
if varNodeList.item(varIndex).nodeType = 4 then
-
MsgBox "ATTR NODE: " & varNodeList.item(varIndex).nodename &
-
" " & varNodeList.item(varIndex).nodevalue & " " &
-
varNodeList.item(varIndex).nodetype
-
MSGBOX varNodeList.item(varIndex).text
-
end if
-
end if
-
Next
-
-
end sub
-