J'ai écrit un VBScript qui est censé transformer tous les nœuds d'un fichier XML, quelle que soit la profondeur de l'arborescence. Cela fait bien sauf que les noms de nœuds pour les nœuds qui ont 2 niveaux ou plus ne sont pas affichés. J'ai besoin des noms de noeud ainsi que des valeurs pour avoir des paires nom/valeur pour un traitement ultérieur par d'autres programmes. Quelqu'un peut-il m'aider s'il vous plaît à obtenir les noms de nœuds manquants affichés.Traverser tous les nœuds dans un fichier XML avec VBScript
Ci-dessous mon 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>
et le 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>
Cela aiderait massivement si vous au courant que nous la sortie désirée N'ayez pas à imaginer ce que vous attendez et nous pouvons ignorer votre code et montrer comment vous auriez dû le faire. – AnthonyWJones