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
    Membre confirmé
    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
    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
    Membre confirmé
    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
    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
    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

+ 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