[MSXML3][VBA] Attribut xmlns de la balise racine
Bonjour à tous!!!
J'ai un rapport Excel à exporter sous format XML:
Code:
1 2 3 4 5 6
| <?xml version="1.0" ?>
<Certificat>
<observation>
<numero>352001</numero>
</observation>
</Certificat> |
À la balise Certificat, je doit ajouter l'attribut xmlns="AnalyseLabo.xsd"
Mais l'attribut en question s'insère AUSSI à la balise observation, mais sans sa veleur ("AnalyseLabo.xsd") alors que si je nome l'attribut test plutôt que xmlns, l'attribut ne s'insère QUE dans la balise Certificat, comme je le voulais au départ...
Voicile code VBA que j'utilise:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| Private Sub subCreerXML()
Dim xmlDoc As New DOMDocument30
Dim rootElement As IXMLDOMElement
Dim docElement As IXMLDOMElement
Dim elementObserv As IXMLDOMElement
Dim docAttrib As IXMLDOMAttribute
Dim pi As IXMLDOMProcessingInstruction
xmlDoc.async = False
xmlDoc.validateOnParse = False
xmlDoc.resolveExternals = False
' Création du noeud racine
Set rootElement = xmlDoc.createElement("Certificat")
' Création d'un attribut dans la racine : xmlns avec le nom de fichier xsd
Set docAttrib = xmlDoc.createAttribute("xmlns")
docAttrib.Text = "AnalyseLabo.xsd"
rootElement.Attributes.setNamedItem docAttrib
' Ajouter le noeud racine au document
xmlDoc.appendChild rootElement
'Sélectionner la première ligne et boucler jusqu'à la dernière
Range("A1").Select
' Créer l'observation
Set docElement = xmlDoc.createElement("observation")
'Insérer le numéro
Set elementObserv = xmlDoc.createElement("numero")
elementObserv.Text = ActiveCell.Value
docElement.appendChild elementObserv
[...]
'Ajouter la ligne au document
rootElement.appendChild docElement
'Fermer les balises
Set pi = xmlDoc.createProcessingInstruction("xml", "version='1.0'")
xmlDoc.insertBefore pi, xmlDoc.childNodes.Item(0)
' Sauvegarde
xmlDoc.Save "Certificat.xml"
End Sub |
Et le résultat obtenu:
Code:
1 2 3 4 5 6
| <?xml version="1.0" ?>
<Certificat xmlns="AnalyseLabo.xsd">
<observation xmlns="">
<numero>352001</numero>
</observation>
</Certificat> |
alors que le résultat voulu serais celui-cis:
Code:
1 2 3 4 5 6
| <?xml version="1.0" ?>
<Certificat xmlns="AnalyseLabo.xsd">
<observation>
<numero>352001</numero>
</observation>
</Certificat> |
Pourquoi donc MSXML place l'attribut xmlns partout alors que si je nomme l'attribut test, il n'yra que dans la racine?
Merci de votre aide éventuelle...