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 :

convertir String en Document XML [DOM]


Sujet :

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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut convertir String en Document XML
    Bonjour a tous,

    je vous expose mon Pb je dispose d'une chaine de caractere de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String testStr = "<?xml version='1.0'?><racine><El1><titre>Chapitre1</titre></El1>
    <El2><titre>Chapitre2</titre></El2></racine>
    et je voudrais transformer cette chaine en Document Dom pour effectuer des traitements ulterieurs. (mais sans passer par un fichier)

    en gros avant je faisais le traitement a partir d'un fichier avec le code suivant :

    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
    36
    37
    38
    39
    40
    41
    42
     
    	public static Document ReadXmlFile (String XmlFile)
    	{		
    		Document document=null;
     
    		try
    		{			
    			// création d'une fabrique de documents
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();								
    			// création d'un constructeur de documents
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();								
    			// lecture du contenu d'un fichier XML avec DOM
    			File xml = new File(XmlFile);
    			document = constructeur.parse(xml);	
     
     
    		}
    		catch(ParserConfigurationException pce)
    		{
    			System.out.println("Erreur de configuration du parseur DOM");
    			System.out.println("lors de l'appel à fabrique.newDocumentBuilder();");
    			pce.printStackTrace();
    			System.exit(0);
    		}
    		catch(SAXException se)
    		{
    			System.out.println("Erreur lors du parsing du document");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    			System.out.println("Les DTD sont elles presentent dans le repertoire ?");
    			se.printStackTrace();
    			System.exit(0);
    		}
    		catch(IOException ioe)
    		{
    			System.out.println("Erreur d'entrée/sortie");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    			ioe.printStackTrace();			
    			System.exit(0);
    		}
     
    		return document;
    	}
    la solution serait peut etre de transformer ma chaine en InputString pour apres faire un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document = constructeur.parse(mon_InputString_qui_represente_ma_chaine);
    voilà si qq'un a une idée qui fonctionnerait je suis preneur.

    Merci

    Sébastien

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    bon ben finalement j'ai trouvé une solution la voilà :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    	public static Node ConvertStringToNode(String Str)	
    	{
    		Node result=null;
     
    		Document document;				
     
    		try
    		{			
    			// création d'une fabrique de documents
    			DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();								
    			// création d'un constructeur de documents
    			DocumentBuilder constructeur = fabrique.newDocumentBuilder();								
    			// lecture du contenu d'un fichier XML avec DOM
     
    			StringBuffer Buffer = new StringBuffer(Str);
     
    			ByteArrayInputStream Bis1 = new ByteArrayInputStream(Buffer.toString().getBytes("UTF-8"));
     
    			document = constructeur.parse(Bis1);
     
    			Element racine = document.getDocumentElement();		
     
    			result=racine.getParentNode(); 											
     
    		}
    		catch(ParserConfigurationException pce)
    		{
    			System.out.println("\n-> Utilities.java/ConvertStringToNode");
    			System.out.println("Erreur de configuration du parseur DOM");
    			System.out.println("lors de l'appel à fabrique.newDocumentBuilder();");
    			pce.printStackTrace();
    			System.exit(0);
    		}
    		catch(SAXException se)
    		{
    			System.out.println("\n-> Utilities.java/ConvertStringToNode");
    			System.out.println("Erreur lors du parsing du document");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    			System.out.println("Les DTD sont elles presentent dans le repertoire ?");
    			se.printStackTrace();
    			System.exit(0);
    		}
    		catch(IOException ioe)
    		{
    			System.out.println("\n-> Utilities.java/ConvertStringToNode");
    			System.out.println("Erreur d'entrée/sortie");
    			System.out.println("lors de l'appel à construteur.parse(xml)");
    			ioe.printStackTrace();			
    			System.exit(0);
    		}
     
     
    		return result;
     
    	}
    A++

    Sebastien

  3. #3
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Merci, ça m'a servi.

    Heureusement que j'ai fait une recherche dans le forum car s'il y a dans la FAQ "Comment convertir un XML DOM en String ?", il n'y a pas l'inverse !

    Je suggère que la question "Comment convertir une String XML en un document DOM ?" soit ajoutée à la FAQ XML > Rubrique DOM

    Et dans la FAQ Java, la partie qui me préoccupait : "Comment convertir une String en un flux de lecture ?"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ByteArrayInputStream monFlux = new ByteArrayInputStream(maString.getBytes("UTF-8"));
    A bon entendeur, salut

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

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

Discussions similaires

  1. [Débutant] Convertir document XML en string
    Par Benmaster1 dans le forum C#
    Réponses: 2
    Dernier message: 19/02/2014, 15h24
  2. [DOM] Convertir variable string --> document XML
    Par benthebest dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 18/12/2009, 13h40
  3. [DOM] Transformer un String en Document XML
    Par patdez dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 22/04/2007, 19h32
  4. String -> Document XML
    Par 205 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 17/05/2006, 17h08
  5. [DOM] parser une String pour en faire un document XML
    Par Fladnag dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 29/03/2004, 11h04

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