🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #8591

Parcours du DOM c�t� serveur...

#8591
From: Metcalfe
Date: Sun, 16 Sep 2001 16:42
106 lines
4828 bytes
Bonjour,

Je vais �tre un peu long donc je comence tout de suite ;0)

Ma question est la suivante : comment d�terminer le niveau auquel on se
trouve lors du parcours du DOM XML ?
Pou �tre plus pr�cis, je vous donne quelques d�tails sur le contexte...
Pour une application permettant l'upload d'un fichier texte, je transforme
le flux de donn�es en un fichier xml c�t� serveur ceci afin de pouvoir
valider ce fichier gr�ce � une DTD. Par la suite, si le fichier semble
conforme � la structure attendue, je cherche � r�cup�rer les donn�es pour
les ins�rer dans une base de donn�es Oracle. Pour cela, je m'appuie sur le
DOM XML.
Un exemple de fichier upload� :

field1|field2|field3|field4
data1-1|data1-2|data1-3|data1-4
data2-1|data2-2|data2-3|data2-4
data3-1|data3-2|data3-3|data3-4

Dans ce fichier, la premi�re ligne correspond aux noms des champs �
compl�ter dans la base. Chaque autre ligne correspond � un enregistrement et
donc aux 4 informations qui viendront prendre place dans la base.
Apr�s une transformation c�t� serveur, j'obtiens le fichier xml suivant :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE root SYSTEM "_test.dtd">
<root>
 <ligne_1>
  <field1>data1-1</field1>
  <field2>data1-2</field2>
  <field3>data1-3</field3>
  <field4>data1-4</field4>
 </ligne_1>
 <ligne_2>
  <field1>data2-1</field1>
  <field2>data2-2</field2>
  <field3>data2-3</field3>
  <field4>data2-4</field4>
 </ligne_2>
 <ligne_3>
  <field1>data3-1</field1>
  <field2>data3-2</field2>
  <field3>data3-3</field3>
  <field4>data3-4</field4>
 </ligne_3>
</root>

A partir de l�, j'utilise l'asp pour instancier un objet DOM et pour essayer
de r�cup�rer les informations qui seront � ins�rer dans la base. C'est l�
que je ne sais pas comment faire. Voici mon code :

Dim oXmlDoc   'As DOMDocument
Dim oParseErr  'As MSXML.IXMLDOMParseError
Dim sPath   'As String
Dim sErrText  'As String
Set oXmlDoc = Server.CreateObject("Microsoft.XMLDOM")
oXmlDoc.validateOnParse = True
oXmlDoc.async = False
sPath = Server.MapPath(".\") & "\" & param_NameFile
If oXmlDoc.Load(sPath) then
   Response.Write "Le document est bien charg�<br>"
   Call subDisplayNode(oXmlDoc.childNodes)
Else
   Set oParseErr = oXmlDoc.parseError
   '... gestion de l'erreur...
   Response.Write sErrText
   Set oParseErr = Nothing
  End If
  Set oXmlDoc = Nothing

Jusque l� tout va bien : j'instancie un objet DOM et je charge le fichier
xml que j'ai cr��. Si celui ci est valid�, j'appelle une fonction qui me
permet de parcourir l'arbre de donn�es. Cette fonction, la voici :

Private Sub subDisplayNode(param_Nodes)
  Dim oNode  'As MSXML.IXMLDOMNode
  For Each oNode In param_Nodes
    If oNode.nodeType = 1 then
        'le nom du champ est oNode.nodeName
        'sa valeur sera oNode.xml
    End If
   If oNode.hasChildNodes Then
    Call subDisplayNode(oNode.childNodes, Param_Level)
   End If
  Next
 End Sub

Cette fonction parcourt chaque noeud et si celui ci a des noeuds enfants, la
fonction s'appelle elle m�me pour continuer le parcours de mani�re
r�cursive. En filtrant sur la propri�t� nodeType, je peux interroger les
propri�t�s nodeName et xml et ainsi obtenir respectivement le nom du champ
et sa valeur. Si c'est effectivement ce qui m'int�resse, je me retrouve avec
des r�sultats qui incluent tous les niveaux de l'arbre or seul le niveau le
plus bas de l'arbre contient les donn�es utiles. Je n'est pas trouv� de
crit�res qui me permettent de parcourir tout l'arbre mais qui ne renvoient
que les donn�es du niveau le plus bas.

D�sol� d'avoir �t� si long mais pour mes d�buts en xml, j'ai un peu de mal �
aller � l'essentiel ;)

Merci de votre aide.

Amicalement,

Metcalfe
Technical Details
Message-ID: <9o2km9$4ii$1@neon.noos.net>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!193.251.151.101!opentransit.net!wanadoo.fr!teaser.fr!noos!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII
X-Google-Thread: 114f60,1a08735d72ba69eb,start
X-Google-Attributes: gid114f60,public
X-Google-ArrivalTime: 2001-09-16 09:40:45 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!193.251.151.101!opentransit.net!wanadoo.fr!teaser.fr!noos!not-for-mail
From: "Metcalfe" <metcalfe@noos.fr>
Newsgroups: fr.comp.text.xml
Subject: Parcours du DOM c�t� serveur...
Date: Sun, 16 Sep 2001 18:42:49 +0200
Organization: Service Usenet NoosNet
Lines: 108
Message-ID: <9o2km9$4ii$1@neon.noos.net>
NNTP-Posting-Host: 195.132.252.17
X-Trace: neon.noos.net 1000658442 4690 195.132.252.17 (16 Sep 2001 16:40:42 GMT)
X-Complaints-To: abuse@noos.fr
NNTP-Posting-Date: Sun, 16 Sep 2001 16:40:42 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000