IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs XML Discussion :

[DOM]Mauvaise comprehension des parseurs, API etc


Sujet :

APIs XML

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Points : 11
    Points
    11
    Par défaut [Résolu][DOM]Mauvaise comprehension des parseurs, API etc
    Bonjour,

    je tente en vain de comprendre toutes les docs et informations que j'ai pu récupérer à droite et à gauche, en vain: je ne comprend rien aux histoires de DOM/SAX, Xalan, couples Xalan/Xerces ou DOM4J/JAXEN, tout ça... kesskessé??
    Est-ce que DOM est bien une API ou est-ce un parseur?
    Est-ce qu'on a besoin de 2 "trucs" à la fois Xalan ET Xerces ou DOM4J ET Jaxen...?
    Si oui, que représente/à quoi servent chacun des deux?
    Est-ce qu'un parseur peut générer sans avoir à faire un tas de println("<"+nom_balise+">") un fichier XML?
    ...

    Je vous remercie d'avance et désolée si j'ai posé des questions stupides mais vraiment je suis perdue...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 40
    Points : 48
    Points
    48
    Par défaut
    * DOM n'est ni un parseur, ni une API, mais un moyen de représenter un document XML en mémoire, sous la forme d'un arbre d'objet (Document Object Model).

    Un parseur DOM est un parseur qui génère une représentation DOM

    Un parseur SAX genère des évennements lorsqu'il rencontre des morceaux du XML (exemple un noeud, un attribut,...)

    En 2 mots, DOM te permet de créer/modifier/consulter du XML.
    Un parseur SAX ne te permet que la consultation

    * XALAN/XERCES (je vais essayer de pas dire trop de conneries, car ca fait + d'un an que je les ai utilisé)

    XALAN = Processeur XSL (ie appliquer une transformation XSL à un fichier XML)
    XERCES = Parseur DOM

    * Pour générer un fichier XML, il faut créer un DOM et le sérialiser

    Pour ce faire, il te faut des librairies permettant de manipuler le DOM.
    Par exemple, le JDK1.4 inclue les librairies JAXP pour cela.

    Si tu veux, je te donne un exemple complet en java ...

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Je te remercie beaucoup pour ta réponse
    et oui, je veux bien le code JAVA (juste pour info parce qu'en fait, entre temps, j'ai écrit un code qui "marche" avec les println(<balise>) etc... c'est peut-être pas très élégant mais je n'ai plus le temps!); par contre, j'aimerais vraiment connaître ta solution si tu as le temps! 8)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 40
    Points : 48
    Points
    48
    Par défaut
    OK, je te donne un exemple pour créer le DOM (et le fichier XML) suivant :

    <Cuisine>
    <Recette>
    <Nom>Blanquette de veau</Nom>
    <Temps unite = «**heure »>1</Temps>
    </Recette>
    </Cuisine>

    Pour les imports, il faut (pour créer et sauvagerder) :

    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    import java.io.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.stream.*;

    Création du DOM avec JAXP JDK 1.4 (Objet de type Document) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DocumentBuilder db = DocumentBuilderFactory.newInstance();
     
    Document DOM =db.newDocument();
     
    Node nRacine = DOM.appendChild(DOM.createElement(« Cuisine »));
     
    Node nRecette = nRacine.appendChild(DOM.createElement(« Recette »));
     
    Node nNom = nRecette.appendChild(DOM.createElement(« Nom »));
    nNom.appendChild(DOM.createTextNode(« Blanquette de veau »));
    Node nTmps = nRecette.appendChild(DOM.createElement(« Temps »));
    ((Element)nTmps).setAttribute(« unite », « heure »);
    Ensuite, si tu veux sauvegarder ton DOM en XML, tu peux créer la méthode suivante :

    [code]
    public void outXML(Document DOM, String filename)
    {
    try
    {
    Transformer transform = TransformerFactory.newInstance().newTransformer();
    StreamResult result = new StreamResult(new File(filename));
    transform.transform(new DOMSource(DOM),result);
    modif=false;
    }
    catch (Exception e) { }
    }

    Un conseil : si tu doit refaire du XML
    Arrete de faire ca avec des printl et utilise les API dédiées, parce que là, tu ne peux absolument pas manipuler tes données XML correctement (je suppose que tu utilises une représentation interne propre de tes données, mais ce n'est pas la peine, c'est justement le rôle du DOM...).

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/03/2006, 10h38
  2. firefox - mauvaise gestion des passwords
    Par photorelief dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/06/2005, 09h02
  3. Réponses: 2
    Dernier message: 19/10/2004, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo