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

Format d'échange (XML, JSON...) Java Discussion :

Comment mettre DTD en générant avec DOM ?


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2004
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 65
    Points : 33
    Points
    33
    Par défaut Comment mettre DTD en générant avec DOM ?
    Bonjour,

    J'utilise DOM pour générer un XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    			// Création d'une fabrique de documents
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
     
    			// création d'un constructeur de documents
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();
     
    			Document document = constructeur.newDocument();
     
    			// Propriétés du DOM
    			document.setXmlVersion("1.0");
    			document.setXmlStandalone(true);
     
    			//document.
     
    			//Création de l'arborescence du DOM
    			Element racine = document.createElement("annuaire");
    			racine.appendChild(document.createComment("Commentaire sous la racine"));
     
    			Element personne = document.createElement("personne");
    			personne.setAttribute("id","0");
    			racine.appendChild(personne);
     
    			Element nom = document.createElement("nom");
    			nom.setTextContent("un nom");
    			personne.appendChild(nom);
     
    			Element prenom = document.createElement("prenom");
    			prenom.setTextContent("un prénom");
    			personne.appendChild(prenom);
     
    			Element adresse = document.createElement("adresse");
    			adresse.setTextContent("une adresse");
    			personne.appendChild(adresse);
     
    			document.appendChild(racine);
    J'obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <annuaire>
    <!--Commentaire sous la racine-->
    <personne id="0">
    <nom>un nom</nom>
    <prenom>un prénom</prenom>
    <adresse>une adresse</adresse>
    </personne>
    </annuaire>
    Je ne trouve pas la méthode pour inserer la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!DOCTYPE annu SYSTEM "annu.dtd">
    Ca me pose problème car quand je parse avec DOM le fichier généré par DOM, il me met une erreur, surement du à cette ligne manquante.

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Tu ecris comment le fichier xml sur disque ?

    Moi, pour mon cours, on utilise le OutputFormat.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    		OutputFormat of = new OutputFormat(newXml, "ISO-8859-1",true);
    			of.setDoctype(null,"reservation.dtd");
    			FileOutputStream fos = new FileOutputStream(file);
     
    			BaseMarkupSerializer bms = new XMLSerializer(fos, of);
    			bms.serialize(newXml);
    Et la il suffit d'utilise lafonction setDoctype();

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Et la même chose pour que le fichier soit vérifier par un schéma?

    Il me manque la ligne pour faire ça...

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Préambule : le gros du code n'est pas de moi
    cf http://java.developpez.com/faq/xml/?...lt#creerXmlDom pour l'original.

    J'ai juste été farfouillé du côté des OutputProperty de transformer.


    Un peu tard (mais ça peut toujorus servir), mais tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
              transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"annu.dtd");
    qui va te rajouter le <!DOCTYPE, ...>


    Au final on trouve ça après juste après ton bout de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // Création de la source DOM
    Source source = new DOMSource(document);
     
    // Création du fichier de sortie
    File file = new File(fichier);
     
    Result resultat = new StreamResult(file);
     
    // Configuration du transformer
    TransformerFactory fabrique = TransformerFactory.newInstance();
    Transformer transformer = fabrique.newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
     
    //le plus :)
    transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,""annu.dtd");

Discussions similaires

  1. Comment mettre en relation Excel avec Access ?
    Par rimrim dans le forum Access
    Réponses: 2
    Dernier message: 20/07/2006, 14h22
  2. [DOM] Comment generer ce fichier XML avec DOM ?
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 18
    Dernier message: 10/04/2006, 09h12
  3. comment mettre de la couleur avec format/write ?
    Par gedeon555 dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2006, 09h12
  4. Comment mettre du RAID 5 avec Mandrake 10
    Par NewB dans le forum Administration système
    Réponses: 9
    Dernier message: 28/05/2004, 13h46
  5. [DOM] Comment lire de l'HTML avec DOM ?
    Par djodjo dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 20/04/2004, 15h37

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