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 :

Parser une chaine String en XML


Sujet :

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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 64
    Points
    64
    Par défaut Parser une chaine String en XML
    Bonjour,

    Je souhaite a partir d'une chaine créer un document XML. J'ai lu de nombreux exmple mais rien ne marche. A chaque fois je recupère une Document vide null.

    Voici mon fichier XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <utilisateur>
    	<nom validator="required('login')">jerome</nom>
    	<mdp validator="required('mot de passe');minLength(6)">password</mdp>
    </utilisateur>
    et voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public Document newDocument(String chaine) throws ApplicationException, SAXException, IOException{
    		try{
    			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    			Document document = parser.parse(new InputSource(new StringReader(chaine)));
    			return document;
    		}
    		catch (ParserConfigurationException e) {
    			throw new ApplicationException(e, SqlException.SELECT);
    		}
    	}
    la String chaine contient mon mon contenu XML. Le document que je recupère est toujours vide.

    Où est mon erreur, svp?

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Points : 1 464
    Points
    1 464
    Par défaut
    Bonsoir,

    J'ai fait un petit exemple de classe java avec ton cas. Lis les commentaires ca te donnera des explications.

    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
    import java.io.StringReader;
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
     
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.xml.sax.InputSource;
     
     
    public class XMLTest {
     
    	public static void main(String[] args) {
     
    		try {
    			String chaine = "<utilisateur><nom validator=\"required('login')\">jerome</nom>"
    				+ "<mdp validator=\"required('mot de passe');minLength(6)\">password</mdp>"
    				+ "</utilisateur>";
     
    			DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    			Document document = parser.parse(new InputSource(new StringReader(chaine)));
     
    			// Ici ca affiche [#document: null], mais ca ne veut pas dire que le document est null!!!
    			System.out.println(document);
     
    			// ici on Test que le Document n'est pas null, Recuperation de l'element nom
    			Element nom = (Element)document.getElementsByTagName("nom").item(0);
     
    			// Affichage du validator
    			String validator = nom.getAttribute("validator");
    			System.out.println(validator);
     
     
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    Angelo

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    Bonjour,
    Je déterre le sujet

    Tout d'abord, merci azerr pour ta réponse, cela fait plusieurs jours que je galère pour lire un XML, j'ai maintenant un peu avancé dans ma galère cependant j'aurais besoin d'une petite aide.
    Pour situer le contexte : je suis en train de développer un client Java pour une API REST distante, ce client utilise donc le protocole HTTP pour récupérer / envoyer des données. Mon problème se situe au niveau de l'analyse des données XML.

    Je m'explique : dans un premier temps je récupère le contenu du fichier XML distant grâce à cette méthode de mon cru :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String xml = Initialiser("accidents", MODE_GET);
    Après avoir fait un System.out.println(xml), j'obtient bien mes données 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
    <?xml version="1.0" encoding="utf-8"?>
    <xml>
    <item>
    <accident_id>1</accident_id>
    <latitude>16165</latitude>
    <longitude>58868</longitude>
    <nom_route>21612 South Pitcairn Ave.</nom_route>
    <date>1303974156</date>
    <blesses>7</blesses>
    <decedes>2</decedes>
    <nb_vehicules>8</nb_vehicules>
    <details>vel condimentum parturient sed natoque cubilia dapibus nibh ullamcorper pharetra facilisis Maecenas molestie Nunc a natoque gravida tristique Nunc pharetra aptent feugiat bibendum lectus varius elementum Cum</details>
    </item>
     
    ...
     
    </xml>
    Par la suite je lance le parsage de ces données à l'aide de ton code (j'ai simplifié) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DocumentBuilder docBuilder = null;
    org.w3c.dom.Document doc = (org.w3c.dom.Document) docBuilder.parse(new InputSource(new StringReader(xml)));
    Quand je lance la récupération des données Java me renvoie ces erreurs :

    Exception in thread "Thread-3" java.lang.NullPointerException
    at client_rest_dsc.Communication.recupererAccidents(Communication.java:105)
    at client_rest_dsc.FenetrePrincipale.actualiserListe(FenetrePrincipale.java:172)
    at client_rest_dsc.FenetrePrincipale$1$1.run(FenetrePrincipale.java:68)
    La ligne 105 est celle que j'ai écrite juste au dessus (org.w3c.dom.Document...)

    J'avoue que je suis perdu, aurait-tu une idée du problème ?

    Merci

  4. #4
    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
    Une idée pourrait être de ne pas laisser le DocumentBuilder à null.

    Jusqu'à preuve du contraire, en Java, appeler une méthode d'une instance null, ça fait toujours un NullPointerException.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Points : 27
    Points
    27
    Par défaut
    Exact, c'est rêglé ! Merci

Discussions similaires

  1. C++ Xercesc : parser une chaine qui la la forme XML
    Par BS_yamen dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 16/01/2012, 17h56
  2. [XML] Parser une chaine de caractère XML
    Par lololeuleu dans le forum APIs
    Réponses: 10
    Dernier message: 16/08/2007, 21h27
  3. Réponses: 9
    Dernier message: 30/11/2005, 18h18
  4. Parser une chaine
    Par TieumB dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/01/2005, 11h20
  5. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 17h49

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