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 :

Espace de nom [DOM]


Sujet :

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

  1. #1
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut Espace de nom
    Bonjour à tous,

    Je n'arrive pas à créer un fichier XML avec l'espace de nom "http://www.domain.tld/ns/font".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    String fontNS = "http://www.domain.tld/ns/font";
     
    OS2WindowsMetricsTable oS2WindowsMetricsTable = ttfFont.getOS2Windows();
     
    	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    	dbf.setNamespaceAware(true);
    	DocumentBuilder db = dbf.newDocumentBuilder();
    	OS2WindowsMetricsDom = db.newDocument();
     
    	final Element rootElement = OS2WindowsMetricsDom.createElementNS(fontNS, "font:oS2WindowsMetrics");
    	OS2WindowsMetricsDom.appendChild(rootElement);
    ...
    Je m'attendais à ce que la méthode createElementNS "écrivait" l'espace de nom !

    Pour le moment, j'obtient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <font:oS2WindowsMetrics>
      <font:version>3</font:version>
      ...
    </font:oS2WindowsMetrics>
    Alors que le but est d'obtenir le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <font:oS2WindowsMetrics xmlns:font="http://www.domain.tld/ns/font">
      <font:version>3</font:version>
      ...
    </font:oS2WindowsMetrics>
    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu convertis comment ton DOM en string?

  3. #3
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour tchize,

    le résultat est obtenu à partir du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     FileOutputStream fos = new FileOutputStream(outputFile);
     
    OutputFormat outputFormat = new OutputFormat("xml", "UTF-8", true);	   
    outputFormat.setVersion("1.0"); 	    
    outputFormat.setStandalone(true);	 
    outputFormat.setIndent(2); 
    outputFormat.setLineWidth(0);             
    outputFormat.setPreserveSpace(false);
    XMLSerializer serializer = new XMLSerializer(fos, outputFormat);	   
    	    serializer.serialize(OS2WindowsMetricsDom);
    Note : lorsque je remplace mon objet fos par la sortie standard System.out, j'obtiens le même résultat.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je ne connais pas ces classes OutputFormat et XMLSerializer. Pas trouvé de documentation.

    J'ai trouvé un tutoriel pour écrire un DOM Java dans un fichier.

    (Je n'en reviens pas comme c'est contre-intuitif, et en plus les tutoriels de Sun/Oracle ont l'air de faire l'impasse là-dessus, ou bien l'ont organisé n'importe comment. Il n'y a pas non plus d'exemple dans la FAQ developpez.com. C'est très semblable à la question pour transformer un DOM en String. Je songe à voir comment devenir rédacteur, rien que pour ça...)

    Note : Traiter du XML en Java est bien plus facile avec JDOM. On m'a aussi dit du bien de DOM4J.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    xmlserializer et une api de xerces.

    Il n'y a pas de doc sur comment serializer un DOM parce que... ce n'est pas prévu avec l'API de base (le détournement du Transformer a aussi ses soucis...)

    (Et pour la partie entre parenthèse, ça se passe ici http://www.developpez.net/forums/d47...va-participez/)

  6. #6
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bon finalement, voici comment j'ai fais :

    j'étais en effet parti de Xerces (FAQ : How do I serialize DOM to an output stream?) :

    It is also possible to serialize a DOM tree by using the Xerces org.apache.xml.XMLSerializer serialization code directly. This non-standard way of serializing a DOM has been deprecated since Xerces-J 2.9.0 and should be avoided if possible.
    Pour que mon Document DOM prenne en charge l'espace de nom,
    j'ai du ajouté la ligne
    rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:font", fontNS); :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    String fontNS = "http://www.polymorphisme.com/ns/font";
    	OS2WindowsMetricsTable oS2WindowsMetricsTable = ttfFont.getOS2Windows();
     
    	DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    	dbf.setNamespaceAware(true);
     
    	DocumentBuilder db = dbf.newDocumentBuilder();
    	OS2WindowsMetricsDom = db.newDocument();
     
    	final Element rootElement = OS2WindowsMetricsDom.createElementNS(fontNS, "font:oS2WindowsMetrics");
    	rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:font", fontNS);
    	OS2WindowsMetricsDom.appendChild(rootElement);
    Sinon, "Il n'y a pas non plus d'exemple dans la FAQ developpez.com." : je n'en ai pas trouvé ! En revanche, à "la question pour transformer un DOM en String", on a une réponse : Comment convertir un XML DOM en String ?

    Enfin, "Je songe à voir comment devenir rédacteur, rien que pour ça..." ??? Là, je n'ai pas tout saisi

    Enfin, merci beaucoup à tous deux

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par polymorphisme Voir le message
    Pour que mon Document DOM prenne en charge l'espace de nom,
    j'ai du ajouté la ligne
    rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:font", fontNS);
    Pourquoi pas oublier Xerces et faire ce que dit le tutoriel que je t'ai montré ?
    Ce n'est peut-être pas aussi facile, mais ça évite de devoir faire des bricolages avec les namespaces.

    Citation Envoyé par polymorphisme Voir le message
    Sinon, "Il n'y a pas non plus d'exemple dans la FAQ developpez.com." : je n'en ai pas trouvé ! En revanche, à "la question pour transformer un DOM en String", on a une réponse : Comment convertir un XML DOM en String ?

    Enfin, "Je songe à voir comment devenir rédacteur, rien que pour ça..." ??? Là, je n'ai pas tout saisi
    En même temps tu n'as rien saisi du tout... Mais c'est sans doute moi qui n'ai pas été assez clair. Tout ce qui est entre parenthèses ne s'adresse pas spécialement à toi.
    Je faisais juste part de mon étonnement. "Comment écrire un DOM dans un fichier," ce n'est documenté nulle fucking part, et c'est drôlement étonnant. Même dans la FAQ developpez.com il n'y en a pas. Je songe à changer cet état de fait.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour thelvin,

    Pourquoi pas oublier Xerces et faire ce que dit le tutoriel que je t'ai montré ?
    Dans un premier temps, par curiosité, je voulais savoir comment ça pouvait fonctionner avec Xerces.
    Ce matin, j'ai suivi la méthode que tu m'as indiqué ... et qui fonctionne très bien.

    Merci beaucoup.

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

Discussions similaires

  1. [XSL] problème avec copy espace de nom
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/10/2005, 15h18
  2. [d6][expert WSDL] problème d'espace de nom.
    Par tchup dans le forum Web & réseau
    Réponses: 1
    Dernier message: 01/09/2005, 14h46
  3. Supprimer les espaces des noms de fichier
    Par Cathy dans le forum Linux
    Réponses: 20
    Dernier message: 04/08/2005, 17h13
  4. [typedef] protection à travers les espaces de noms
    Par PINGOUIN_GEANT dans le forum C++
    Réponses: 7
    Dernier message: 02/02/2005, 20h21

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