rectifier fichier xml généré par macro

cety64

XLDnaute Nouveau
Bonjour,

J'utilise le code ci-dessous pour générer un fichier xml.
J'ai un problème pour le contenu d'une balise dont le texte comporte des < et > interprétés en &lt; et &gt;

exemple : <logolink><!CDATA[http://...]]></logolink> qui lorsque que je lis dans notepad le fichier xml généré se retrouve en <logolink>&lt;!CDATA[http://...]]&gt;</logolink>

voici mon code ci-dessous issu d'un post de ce forum:

Code:
Sub CreationFichierXML(Plage As Range)
'
'Nécessite d'activer la référence "Microsoft XML, V..."
'
Dim XnodeRoot As IXMLDOMElement, oNode As IXMLDOMNode
Dim XNom As IXMLDOMElement
Dim XInfos As IXMLDOMElement
Dim Cmt As IXMLDOMComment
Dim Entete As Range, Cell As Range
Dim i As Integer, j As Integer
 
Set Entete = Plage.Rows(1)
Set Plage = Plage.Offset(1, 0).Resize(Plage.Rows.Count - 1, Plage.Columns.Count)

'----
Set objDOM = New DOMDocument

'Ajoute un commentaire qui reprend le nom de l'utilisateur et la date du jour.
Set Cmt = objDOM.createComment("Créé par " & Environ("username") & ", le " & Date)
Set Cmt = objDOM.insertBefore(Cmt, objDOM.childNodes.Item(0))
 
   
'Type de fichier
Set oNode = objDOM.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
Set oNode = objDOM.insertBefore(oNode, objDOM.childNodes.Item(0))
'----

Set XnodeRoot = objDOM.createElement("Portlet")
objDOM.appendChild XnodeRoot

For i = 1 To Plage.Rows.Count

    Set XNom = objDOM.createElement("Identity")
    XNom.setAttribute "Userinfo", Plage.Cells(i, 1)
    XnodeRoot.appendChild XNom
    
        Set XInfos = objDOM.createElement("LogoUrl")
        XInfos.Text = Feuil2.Cells(13, 4).Value
        XNom.appendChild XInfos
    
        Set XInfos = objDOM.createElement("LogoLink")
        XInfos.Text = Feuil2.Cells(13, 5).Value
        XNom.appendChild XInfos
    
        Set XInfos = objDOM.createElement("MailLabel")
        XInfos.Text = Feuil2.Cells(13, 6).Value
        XNom.appendChild XInfos
        
        Set XInfos = objDOM.createElement("MailRecipient")
        XInfos.Text = Plage.Cells(i, 2)
        XNom.appendChild XInfos

        Set XInfos = objDOM.createElement("MailSubject")
        XInfos.Text = Feuil2.Cells(13, 7).Value
        XNom.appendChild XInfos

Next i
 
objDOM.Save ActiveWorkbook.Path + "\" & Feuil2.Cells(13, 8).Value

Set XnodeRoot = Nothing
Set objDOM = Nothing
End Sub

Si vous avez une idée pour me dépanner soit pour modifier mon code, soit pour ouvrir le fichier xml et remplacer &lt; et &gt; en < et > ce serait formidable.

Bonne journée à tous.
 
C

Compte Supprimé 979

Guest
Re : rectifier fichier xml généré par macro

Salut Cety64,

Pour moi il s'agit juste d'un problème d'affichage des balises dans le bloc note ou autre !

Dans ton code, tu oublies de mettre l'extension du fichier
Code:
objDOM.Save ActiveWorkbook.Path + "\" & Feuil2.Cells(13, 8).Value [B][COLOR=blue]& ".xml"[/COLOR][/B]

Si tu ajoutes cela et que tu doubles clique sur ton fichier, tu verras que l'affichage dans IE ou Firefox est bon ;)

A+
 

GIBI

XLDnaute Impliqué
Re : rectifier fichier xml généré par macro

Bonjour,

Notepad ne fait qu'afficher le fichier créé sans faire aucune interprétation.

Ajouter le suffixe XML permet simplement de définir une typologie de fichier et l'associer un programme. dans notre cas il ne s'agit simplement d'un fichier contenant une syntaxe XML (donc plutôt du texte).

Explication de texte (Xml) :

Pour éviter de confondre certains caractères (lettres avec accents, &, = >< etc..) avec des balises on doit remplacer dans les textes ces caractères par des &... pour que le parseur (outils d'analyse syntaxique du XML) ne tienne compte de ces caractères.

ici , Comme tu le sais, <> sont remplacés par &GT ou &LT. En conclusion si tu regarde ton fichier, c'est la macro qui fais des substitutions ==> donc il faut agir en amont = probablement choisir une autre méthode que "IXMLDOMElement" en effet le texte attribué via la proprité .txt est converti automatiquement en texte comparible XLM (donc avec convertion des caractères <>&=... en aLT &GT &AMP)


Pour que le parseur n'analyse pas un texte, on peut écrire le texte de la manière
suivante :
<![CDATA[ texte ignoré par le parseur xml]]>


Tu peux effectivement faire un "remplacer par" avec une éditeur mais attention ton XML risque de comporter des erreurs.

Pour afficher du XML n'utilise pas Notepad qui est trop "bourrin" utilise par exemple Ultraedit qui tient compte de la syntaxe



GIBI
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : rectifier fichier xml généré par macro

bonjour,

un autre solution possible:
en fin de macro, ouvrir le fichier, remplacer les "&lt;" en "<" et réenregistrer le fichier.
peux-tu envoyer le fichier générer stp (juste pour voir le truc, ça m'intrigue)

bonne journée
 

GIBI

XLDnaute Impliqué
Re : rectifier fichier xml généré par macro

Bonsoir,

je viens apporter une solution à votre problème qui est la saisie d'un texte contenant la notion de CDATA.
Il faut enlever les notion Xml (<!CDATA[...]]>)dela cellule de la feuille excel (Feuil2.Cells(13, 5).Value), et créer directement cette notion comme suit :



Set XInfos = objdom.createElement("LogoLink")
Set root = objdom.documentElement
Set CDATASection = objdom.createCDATASection(Cells(13, 5).Value)
objdom.documentElement.appendChild CDATASection
'XInfos.Text = Cells(13, 5).Value
XNom.appendChild XInfos


et vous n'avez plus de problème de traduction "à tort" des bornes de balise XML


Votre question m'a appris l'utilsation des méthode XML , personnellement je génère des fichiers XML soit avec word et du publipostage soit en VBA excel avec des print.

Merci et bonsoir


GIBI
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 786
Membres
101 817
dernier inscrit
carvajal