Moving all nodes in an XML file using VBScript

I wrote VBScript that should convert all nodes in an XML file, regardless of the depth of the tree. This is good, except that the node names for those nodes that have a level of 2 or more levels are not displayed. I need node names as well as values, so I have name / value pairs for further processing by other programs. Can someone help me in getting the missing node names.

Below is my code:

<html> <head> </head> <body> <script type="text/vbscript"> Set xmlDoc=CreateObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("test.xml") Dim objDocElem, strNode, strSubNode, xmlnn, xmlnv, xmlnc, xmldd, xmlfd, xmlfv Set n_firstchild = xmldoc.documentElement.firstChild Set p_node = n_firstchild.parentNode Set pn_attribs = p_node.attributes For Each pnAttr in pn_attribs xmlfd = xmlfd & pnAttr.name & chr(9) xmlfv = xmlfv & pnAttr.value & chr(9) Next Set objDocElem=xmlDoc.documentElement Set y = objDocElem.childNodes i=0 Do While i < y.length If y(i).nodeType <> 3 Then If Isnull(y(i).childNodes(0).nodeValue) Then xmlnv = xmlnv & "Category" & chr(9) Else xmlnv = xmlnv & y(i).childNodes(0).nodeValue & chr(9) End If xmlnn = xmlnn & y(i).nodeName & chr(9) xmlnc = xmlnc + 1 z=0 Do While z < y(i).childNodes.length If y(i).childNodes(z).nodeType <> 3 Then xmlnc = xmlnc + 1 xmlnn = xmlnn & y(i).childNodes(z).nodeName & chr(9) xmlnv = xmlnv & y(i).childNodes(z).text & chr(9) End If z=z+1 Loop End If i=i+1 Loop document.write("form details: " & xmlfd & "<br />") document.write("form values: " & xmlfv & "<br /><br />") document.write("node names: " & xmlnn & "<br />") document.write("node values: " & xmlnv & "<br />") document.write("<br />node count: " & xmlnc & "<br />") </script> </body> </html> 

and XML:

 <?xml version="1.0" encoding="utf-8" standalone="yes"?> <form penid="AJX-AAE-CRB-7P" submitted="2009-09-10 14:57:07" updated="2009-09-10 15:05:22" finalised="2009-09-10 15:59:48"> <Forename>Russell</Forename> <Surname>Kilby</Surname> <HouseNumber>248</HouseNumber> <Letter>GRG</Letter> <Products> <WinSoftware>Product One</WinSoftware> <MacSoftware>Product Two</MacSoftware> <LnxSoftware>Product Three</LnxSoftware> <Generic> <Product1>Speedo</Product1> <Product2>Switches</Product2> <Product3>BIOS</Product3> <TestOne> <Panel1>Front</Panel1> <Panel2>Back</Panel2> <Panel3>Middle</Panel3> </TestOne> </Generic> <Hardware>Fender</Hardware> </Products> <HouseName>Just Tea House</HouseName> <PostCode>B87 7DF</PostCode> <Insurer>ABC Cars</Insurer> <PolicyNumber>FDA 8D3JD7K</PolicyNumber> <Make>Ford</Make> <VehicleReg>EX51 CBA</VehicleReg> <DescriptionOfDamage>Big smash on the from</DescriptionOfDamage> <Estimate>1300</Estimate> <AlertManager>Yes</AlertManager> </form> 
+3
source share
1 answer

Please try the following:

 set nodes = xmlDoc.selectNodes("//*") for i = 0 to nodes.length document.write(nodes(i).nodeName & " - " & nodes(i).text & "<br />") next 
+6
source

Source: https://habr.com/ru/post/910830/


All Articles