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 :

Ajouter simplement un attribut à un Document (xml)


Sujet :

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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Ajouter simplement un attribut à un Document (xml)
    Bonjour à tous,

    Je récupère un document XML sous forme de String.
    Je le convertis en Document XML (org.w3c.dom.Document) via cette API :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      public static Document loadXML(String xml) throws Exception {
        DocumentBuilderFactory fctr = DocumentBuilderFactory.newInstance();
        DocumentBuilder bldr = fctr.newDocumentBuilder();
        InputSource insrc = new InputSource(new StringReader(xml));
        return bldr.parse(insrc);
      }
    et je souhaiterais ajouter un simple attribut à mon premier noeud (d'ailleurs, je souhaite rajouter le xmlns) sans ajouter l'attributs aux noeuds fils (car j'avais trouvé une API sur le net mais cela m'ajoutait l'attribut valorisé sur le père et l'attribut xmlns="" sur tous les fils).

    Exemple de XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="ISO-8859-15"?>
    <Reponse>
    	<Blabla>
    		<BliBli>485094890</BliBli>
    		<Blublu>370454295</Blublu>
    	</Blabla>
    </Reponse>
    Je souhaite juste ajouter l'attribut à la balise <Reponse>

    Merci.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Une fois que tu a localisé la Balise Response dans le document xml, tu fais ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Element response = ....;
    response.setAttribute("name","value");
    Pour le reste, rajouter le xmlns=... c'est beaucoup plus compliqué, il faut reconstruire tout ton arbre, car le xmlns n'est pas un attribut, ce que tu veux faire c'est changer le namespace associé à chaque balise. Or le DOM ne fournis pas de méthode "setNamespaceURI", le namespace est précisé dès le moment où tu crée chaque Noeud. Tu aura beaucoup plus facile en utilisant un XSLT comme celle-ci pour faire cette transformation (elle remplace le namespace old en new):


    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
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet 
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:old="http://www.prshanmu.com/old/1.0"
        xmlns:new="http://www.prshanmu.com/new/1.0">
      <xsl:template match="node()|@*">
        <xsl:copy>
          <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="old:*">
        <xsl:element name="{local-name()}" xmlns="http://www.prshanmu.com/new/1.0" >
          <xsl:apply-templates select="node()|@*"/>
        </xsl:element>
      </xsl:template>
    </xsl:stylesheet>

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Humm... Avec org.w3c.dom.Document et sans utiliser setNamespaceAware(true), ça devrait marcher...

    Mais en principe, xmlns n'est pas un attribut. C'est le mécanisme qui spécifie les namespaces, et on ne peut pas "l'ajouter" comme ça. Changer le namespace, c'est changer le nom de l'élément, donc c'est créer un nouvel élément à la place de celui qui existe. C'est le raisonnement normal, qu'on retrouve dans la plupart des bibliothèques.

    Edit : oui, bon, je répète ce qui est dit au-dessus
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Humm... Avec org.w3c.dom.Document et sans utiliser setNamespaceAware(true), ça devrait marcher...
    Disons que là on joue sur l'effet de bord du serializer derrière en espérant qu'il laissera ça passer

Discussions similaires

  1. Ajouter un "truc" dans un document XML
    Par zooffy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/02/2011, 11h37
  2. [XSLT]Ajout de style à un document xml-xslt
    Par lecra dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 02/11/2007, 11h22
  3. Ajout d'un attribut sur un noeud xml
    Par jbrasselet dans le forum VBScript
    Réponses: 2
    Dernier message: 02/07/2007, 16h51
  4. Ajouter des éléments à un document XML
    Par ptr83 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/10/2006, 08h43
  5. Convertir les tags HTML en entités avant l'ajout dans un document XML et vice versa
    Par JavaEli dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 26/09/2006, 11h36

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