Bonjour à tous!!!
J'ai un rapport Excel à exporter sous format XML:
À la balise Certificat, je doit ajouter l'attribut xmlns="AnalyseLabo.xsd"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0" ?> <Certificat> <observation> <numero>352001</numero> </observation> </Certificat>
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:
Et le résultat obtenu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
alors que le résultat voulu serais celui-cis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0" ?> <Certificat xmlns="AnalyseLabo.xsd"> <observation xmlns=""> <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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0" ?> <Certificat xmlns="AnalyseLabo.xsd"> <observation> <numero>352001</numero> </observation> </Certificat>
Merci de votre aide éventuelle...
Partager