Les fichiers à plat peuvent également être générés à partir d'une source XML.
Dans ce cas de sérialisation, il suffit de décomposer la structure XML selon le type de fichier à plat souhaîté.
Il est possible d'utiliser aussi bien le modèle d'objet de document XML qu'une feuille de style de transformation XSLT. Bien que cette dernière semble parfaitement convenir pour ce genre de processus, nous nous attacherons à développer un programme basé sur le DOM XML.
A l'instar de la transformation d'un fichier à plat vers un fichier XML, une étude méticuleuse de la source XML et du résultat textuel envisagé est nécessaire afin de déterminer le type de fichier à plat, les lignes, les champs et les délimiteurs.
Exemple [voir]Fichier source XML <statistique> <client adresse_ip="valeur"> <document poids="valeur">valeur</document> <protocole>valeur</protocole> <code>valeur</code> <methode>valeur</methode> </client> ... </statistique> Modèle de fichier à plat 65.116.145.133 /courscss/style.html 16169 HTTP/1.1 200 GET adresse_ip document poids protocole code methode
<% Dim obj_dom Dim fichier, ligne, champ, texte, delimiteur Dim racine, noeud, enfant, attribut, attributs Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") obj_dom.async = False fichier = Server.MapPath("fichier_log.xml") obj_dom.load(fichier) Set racine = obj_dom.documentElement delimiteur = " " For Each noeud In racine.childNodes Set attributs = noeud.attributes Set attribut = attributs.item(0) champ = champ & attribut.value & delimiteur For Each enfant In noeud.childNodes champ = champ & enfant.text & delimiteur Set attributs = Nothing Set attributs = enfant.attributes If attributs.length > 0 Then Set attribut = attributs.item(0) champ = champ & attribut.value & delimiteur End If Next ligne = ligne & champ & chr(10) & chr(13) Next Response.write "<b>Le contenu du fichier log :" _ & "</b><br>" & ligne Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") set texte = obj_fso.CreateTextFile("c:\fichier_stat.txt", True) texte.Write ligne texte.close Set texte = Nothing Set fichier = Nothing %> |