Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment créer un nouveau document XML ?
auteurs : ThierryAIM, bbil
Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :
VBS

'-- Créer un document XML
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    
' Créer et ajouter la racine dans le document
' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XML
Set oRacine = xmlDoc.createElement("Racine")
    
' Ajouter la racine dans le document
xmlDoc.appendChild oRacine

' Ajouter un élément
Set oElement = xmlDoc.selectSingleNode("Racine")  ' positionnement sur la racine
Set oElement = xmlDoc.createElement("element")    ' création d'un fils membre
xmlDoc.documentElement.appendChild oElement       ' crée le fils de la racine

' Ajouter des champs balises
Set oNom = xmlDoc.createElement("nom")
oNom.Text = "LENOM"
oElement.appendChild oNom
Set oNom = Nothing

Set oPrenom = xmlDoc.createElement("prenom")
oPrenom.Text = "Prénom"
oElement.appendChild oPrenom
Set oPrenom = Nothing
Set oElement = Nothing

'-- Indenter le fichier créé
set rdr = CreateObject("MSXML2.SAXXMLReader")
set wrt = CreateObject("MSXML2.MXXMLWriter")
Set oStream = CreateObject("ADODB.STREAM")
oStream.Open 'Ouverture objet stream..
oStream.Charset = "ISO-8859-1"

wrt.indent = True
wrt.encoding = "ISO-8859-1"
wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet Stream
Set rdr.contentHandler = wrt
Set rdr.errorHandler = wrt
rdr.Parse xmlDoc
wrt.flush

' Sauver le fichier créé
oStream.SaveToFile "test1.xml", 2

' Détruire les objets
Set rdr = Nothing
Set wrt = Nothing
Set xmlDoc = Nothing
Résultat :
XML

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Racine Create="03/03/2007">
	<element ID="1">
		<nom>LENOM</nom>
		<prenom>Prénom</prenom>
	</element>
</Racine>

Comment ouvrir un document XML existant ?
auteur : bbil
Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :

'-- Lire un document XML
Set xmlDoc=CreateObject("Microsoft.XMLDOM")

'La desactivation du mode asynchrone permet de charger entièrement le document en mémoire avant le traitement
xmlDoc.Async="false"

'Charger le document en mémoire
xmlDoc.Load("c:\test1.xml")

For each x in xmlDoc.documentElement.childNodes
   Msgbox x.nodename & " : " & x.text
Next
Set xmlDoc = Nothing

Comment ajouter un attribut à une balise XML ?
auteurs : Forum, ThierryAIM
La méthode SetAttribute de l'objet Element permet de spécifier un attribut pour une balise XML.
Un attribut se compose de 2 paramètres :
- un identificateur
- la valeur de l'attribut

Reprenons l'exemple précédent et ajoutons un attribut Date au noeud racine et un attribut ID pour le noeud element :

'-- Créer un doc XML
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set oCreation = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
xmlDoc.insertBefore oCreation, xmlDoc.childNodes.Item(0)
    
' Créer et ajouter la racine dans le document
' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XML
Set oRacine = xmlDoc.createElement("Racine")

' Ajouter un attribut Date de création du document
oRacine.setAttribute "Créé_le", FormatDateTime(Date, vbGeneralDate) 
    
' Ajouter la racine dans le document
xmlDoc.appendChild oRacine

' Ajouter un élément
Set oElement = xmlDoc.selectSingleNode("Racine")  ' positionnement sur la racine
Set oElement = xmlDoc.createElement("element")    ' création d'un fils membre

' Ajouter un attribut ID à l'élément créé
oElement.setAttribute "ID", "1"
xmlDoc.documentElement.appendChild oElement       ' crée le fils de la racine

' Ajouter des champs balises
Set oNom = xmlDoc.createElement("nom")
oNom.Text = "LENOM"
oElement.appendChild oNom
Set oNom = Nothing

Set oPrenom = xmlDoc.createElement("prenom")
oPrenom.Text = "Prénom"
oElement.appendChild oPrenom
Set oPrenom = Nothing
Set oElement = Nothing

' Sauver le fichier créé
xmlDoc.save ("test1.xml")
Set xmlDoc = Nothing
Résultat :
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<Racine Créé_le="19/02/2007">
     <element ID="1">
          <nom>LENOM</nom>
          <prenom>Prénom</prenom>
     </element>
</Racine>
lien : faq Comment créer un nouveau document XML ?

Comment accéder aux valeurs d'un noeud par le nom de balise ?
auteurs : Forum, ThierryAIM
C'est bien gentil de créer un document XML, encore faut-il pouvoir accéder à son contenu et en retirer les informations qui nous intéressent :

Sur la base de l'exemple précédent, comment récupérer les valeurs de la balise nom en utilisant la méthode getElementsByTagName :
VBS

'-- Lire un doc XML
Set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false" ' permet de charger entièrement le document en mémoire avant le traitement
xmlDoc.load("test1.xml")

' Lister les valeurs par nom de balise
    Set oElement = xmlDoc.documentElement
        
    If Not oElement Is Nothing Then
        For Each x In oElement.getElementsByTagName("nom")
            MsgBox x.Text
        Next
    End If
lien : faq Comment ajouter un attribut à une balise XML ?

Comment accéder aux attributs d'une balise ?
auteur : bbil
La méthode GetAttribute de l'objet Element permet d'accéder aux attributs d'une balise noeud :
VBS

'-- Lire un doc XML
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = "false" 
xmlDoc.load("test1.xml")

' Pour tous les noeuds "element", renvoie l'attribut "ID"
' Attention à la casse !
For Each oElement In xmlDoc.getElementsByTagName("element")
      MsgBox oElement.getAttribute("ID")
Next

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com