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 :

JAVA < XML encoding="ISO-8859-1" et sous noeud


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Par défaut JAVA < XML encoding="ISO-8859-1" et sous noeud
    bonjour à tous,

    je veux exploité un fichier XML avec du JAVA, mais le souci est que le fichier

    premier souci :
    XML est encoding="ISO-8859-1" donc je n'arrive pas a récupéré des nœud XML qui intègre des accents.

    deuxième souci :
    comment faire pour récupérer des valeur dans des sous nœuds
    par exemple les valeur des balises prénom, service et status pour les deux utilisateurs.

    merci d'avance 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
    Quel api, quel code vous pose actuellement problème?

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Par défaut
    sur ce forum c'est le java qui me pose un souci
    mais je travail sur plusieurs api en même temps
    si vous pouvez m'aider ce serait sympa ...

  4. #4
    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
    Vous dites que vous n'arrivez pas à récupérer vos noeuds avec des accents, comment avez vous essayé?

    Il existe une multitude d'api différentes pour le xml en java (sax, stax, dom, jdom, dom4j, ...) si non ne sais pas laquelle vous utilisez, difficile de vous aider

    Si vous voulez des code d'exemple, il y en a pas mal déjà dans la xml
    http://java.developpez.com/faq/xml/

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 7
    Par défaut
    J'ai essayer avec JDOM mais quelque soit la méthode votre aide me sera utile.
    J'ai un problème avec les accent et le déplacement dans l'arborescence(les sous nœuds)
    Exemple: je veux récupérer uniquement les utilisateurs
    avec leur paramètres.
    Mais dans une balise des paramètres utilisateur il y a un accent.
    Et les utilisateurs sont dans des sous nœuds de arborescence.

    Mon code 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
    18
    19
    20
    21
    22
    23
    24
     
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <A>
    	<A1>
    	</A1>	
    	<A2>
    		<A2A>
    		</A2A>
    		<A2B>
    			<A2B1>
    			</A2B1>
    			<Utilisateur>
    				<prénom>Jean</prénom>
    				<nom>Delatour</nom>
    				<tel>0606060606</tel>
    			</Utilisateur>
    			<Utilisateur>
    				<prénom>Jacques</prénom>
    				<nom>martin</nom>
    				<tel>0707070707</tel>
    			</Utilisateur>
    		</A2B>
    	</A2>	
    </A>
    Mon code JAVA :
    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
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
     
    public class Test 
    {
    	public static void main( String[] args ) throws Throwable 
    	{
    		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    		dbf.setIgnoringElementContentWhitespace( true );
    		DocumentBuilder db = dbf.newDocumentBuilder();
    		Document d = db.parse( "mon_fichier.xml" );
    		Element root = d.getDocumentElement();
     
    		NodeList Utilisateur = root.getElementsByTagName( "Utilisateur" );		
    		for ( int i = 0; i < Utilisateur.getLength(); i++ ) 
    		{
    			Element a = ( Element )Utilisateur.item( i );
    			System.out.println( "nom : " + a.getTagName( "nom")
    			+ " " + a.getAttribute( "nom" ) );
    		}
    	}
    }
    erreur généré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Test.java:22: getTagName() in org.w3c.dom.Element cannot be applied to (java.lang.String)
    			System.out.println( "nom : " + a.getTagName( "nom")
    			                                ^
    1 error

  6. #6
    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 albert12345 Voir le message
    J'ai essayer avec JDOM mais quelque soit la méthode votre aide me sera utile.
    La FAQ, indiquée au-dessus, et à laquelle il faudra penser tout de suite une prochaine fois, contient plein d'exemples. Les tutoriaux aussi.
    L'utilisation de JDOM est particulièrement simple (du moins quand on a déjà une certaine habitude de XML,) et le tutoriel sur JDOM l'illustre bien.

    À part ça, deux chose :

    #1 -

    Tu n'utilises pas JDOM, là. Tu utilises le DOM de JAXP, la bibli XML fournie avec Java. Ce n'est pas JDOM, mais ça marche bien. Je trouve juste que c'est bien inutilement compliqué.

    #2 -

    J'ai un problème avec les accent et le déplacement dans l'arborescence(les sous nœuds)
    Euh... L'erreur que tu nous montres, là, c'est une erreur de compilation. Ce n'est pas une erreur d'exécution. Ton programme n'as pas démarré, il n'a pas lu de fichier XML, ni n'a rien fait du tout d'ailleurs puisqu'il n'a pas démarré, et par conséquent, que le fichier XML contienne des accents ou pas n'a pas la moindre chance de changer quoi que ce soit pour l'instant.
    Ton programme ne démarre pas. Il ne compile même pas.

    Ceci est parce que, comme l'indique le message d'erreur, la méthode getTagName() ne prend pas de paramètre.
    Ce devrait être

    Bien sûr, ce que tu veux, c'est avoir le contenu de l'enfant <nom>. Ça ne se fait pas comme ça. Ce serait quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String nom = null;
    NodeList nomList = a.getElementsByTagName("nom");
    if(nomList.getLength() > 0) {
      Element nomElt = (Element)nomList.item(0);
      nom = nomElt.getTextContent();
    }
    Autre possibilité, avec XPath :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    XPathExpression expression = xpath.compile("nom");
    String nom = expression.evaluate(a);
    factory, xpath et expression n'ont pas besoin d'être reconstruits à chaque boucle. On peut les construire une fois, garder expression dans un coin, et s'en servir pour appeler evaluate() plein de fois dessus. Par contre il faut une expression différente par... expression différente. (Une pour "nom", une pour "prénom"...)

    Je réitère qu'il serait plus simple de faire ça en JDOM.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/06/2015, 19h17
  2. Tester la possibilité d'encoder en iso-8859-1
    Par param_cat dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2010, 16h43
  3. <?xml version="1.0" encoding="ISO-8859-1" ?>: obligatoire?
    Par BradPitt dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 25/11/2008, 12h45
  4. Encoder en ISO 8859-1
    Par bibiodp dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 14/06/2007, 18h36

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