Пересечение всех узлов в XML-файле с VBScript

Я записал VBScript, который предполагается к поперечному все узлы в XML-файле, независимо от глубины дерева. Это это преуспевает за исключением того, что имена узла для тех узлов, которые являются 2 или больше уровнями глубоко, не отображены. Мне нужны имена узла, а также значения так, чтобы у меня были пары имя/значение для последующей обработки другими программами. Может любой помогать мне в получении недостающих отображенных имен узла.

Ниже мой код:

<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>

и 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>
5
задан AnthonyWJones 15 December 2009 в 16:15
поделиться