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 :

Erreur lors du parsing d'un fichier XML par l'API DOM


Sujet :

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

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Erreur lors du parsing d'un fichier XML par l'API DOM
    Bonjour à tous et à toutes,
    je sollicite votre aide car j'ai un petit problème de parsing d'un fichier XML. Je fais un programme pour rechercher une section de mon fichier XML. Pour cela je teste alors les valeurs des Node et des Elements.
    Malheureusement, lorsque je récupère la valeur des nodes telles qu'elles apparaissent dans le fichier,c'est à dire une chaine de caractères suivi de caractères espaces et d'un saut de ligne. Or j'aurais voulu récupérer seulement la valeur du node et non ce qui suit après puisque ce sont que des caractères facilitant la lecture visuelle d'un fichier XML.
    Savez vous si il ya une opition à indiquer lors du parsing pour qu'il ne prenne pas en compte les espaces et les sauts de ligne ?

    Merci d'avance

  2. #2
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    il me semble que suivant leur emplacement les sauts de lignes font ou non parties des noeuds ou feuilles, c'est comme ca qu'est défini XML

    par contre tu peux utiliser la méthode trim() de la classe String pour nettoyer tout ca

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Pourrais-tu être plus clair et montrer du code ? Que récupères-tu ? Les TEXT data contenues entre les balises ? Le descriptif de l'élément contenu entre le < et le > ? Autre chose ? Quelle(s) méthode(s) de la classe Node ou Element utilises-tu ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Désolé j'avais oublié de mettre mon code :
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    import javax.xml.parsers.DocumentBuilder; 
    import javax.xml.parsers.DocumentBuilderFactory;  
    import javax.xml.parsers.ParserConfigurationException;
    import org.xml.sax.SAXException;  
    import java.io.File;
    import java.io.IOException;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element ; 
    import org.w3c.dom.Node ;
    import org.w3c.dom.NodeList ; 
     
    public class TestXML{
     
        static Document document; 
     
    	public static void printNode(Node node){
    		Element e ;
    		if(node.getNodeType() == Node.ELEMENT_NODE)
    		{
    			System.out.println("Element :"+node.getNodeName());
    		}
    		else if(node.getNodeType() == Node.TEXT_NODE)
    		{
    			if(!(node.getNodeValue().equals("")))
    			{
    				System.out.println("Texte :"+node.getNodeValue());
    			}
    		}
    		NodeList nodes = node.getChildNodes();
    		for(int i=0; i<nodes.getLength(); i++){
    			Node n = nodes.item(i);
    			printNode(n);
    		}
    	}
     
    	public static void searchNode(Element node,String nodeValueSearched)
    	{
    		NodeList nodeList = node.getElementsByTagName("conditionsSet") ;
    		System.out.println("Il y a "+nodeList.getLength()+" conditionsSet ds le fichier") ;
    		for(int indexNode = 0 ; indexNode < nodeList.getLength() ; indexNode ++)
    		{
    			Element element = (Element) nodeList.item(indexNode) ;
    			NodeList childList = element.getChildNodes() ;
    			for(int i = 0 ; i < childList.getLength() ; i ++)
    			{
    				Node e = (Node) childList.item(i) ;
    				e.normalize() ;
    				if(e.getNodeType() == Node.ELEMENT_NODE)
    				{			
    				}
    				else if(e.getNodeType() == Node.TEXT_NODE)
    				{
    					System.out.println("child "+i+" "+e.getNodeValue()) ;
    					if(e.getNodeValue().equals(nodeValueSearched))
    					{
    						System.out.println("Trouvé") ;
    					}
    				}
    			}
    		}
    	}
     
        public static void main(String argv[])
        {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setIgnoringElementContentWhitespace(true) ;
            try {
               DocumentBuilder builder = factory.newDocumentBuilder();
               document = builder.parse( new File("/C:/Documents%20and%20Settings/le/Mes%20documents/eclipse-SDK-3.0.2-win32/eclipse/workspace/Test_performance/configuration.xml") );
               document.normalize() ;
               Element root = document.getDocumentElement() ;
               root.normalize() ;
               //printNode(root) ;
               searchNode(root,"MFDP/general/FreeTexts") ;
            } catch (SAXException sxe) {
               Exception  x = sxe;
               if (sxe.getException() != null)
                   x = sxe.getException();
               x.printStackTrace();
            } catch (ParserConfigurationException pce) {
                // Parser with specified options can't be built
                pce.printStackTrace();
            } catch (IOException ioe) {
               // I/O error
               ioe.printStackTrace();
            }
        } // main
    }
    merci encore

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Et en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    else if(e.getNodeType() == Node.TEXT_NODE)  { 
      Text t = (Text)e;
       ...
    }
    N'y a t'il aucune méthode de la classe Text qui te retourne ce que tu veux ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Salut tous,

    Il me semble que j'ai déjà eu ce problème.
    Comme le dit Guipom, si tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <balise_xml>
    mon texte
    </balise_xml>
    l'élément <balise_xml> possède 3 fils : le premier contient un saut de ligne, le deuxième "mon texte" et le troisième un saut de ligne.
    Avec JDOM, c'est à vérifier mais avec DOM de base c'est comme ça.

    Si ton soucis est d'extraire les élément de type TEXT ou CDATA, tu peux faire ça avec des filtres tout fait de Jdom.

    A+

Discussions similaires

  1. Message d'erreur lors du parsing d'un fichier JSON
    Par Rony Rauzduel dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 28/07/2014, 11h28
  2. Erreur lors du parsing d'un fichier XML
    Par BIREFKOUN dans le forum Web sémantique
    Réponses: 6
    Dernier message: 17/01/2013, 15h55
  3. Réponses: 1
    Dernier message: 17/08/2012, 23h58
  4. erreur lors de création d'un fichier xml
    Par nancy maman dans le forum Général Python
    Réponses: 1
    Dernier message: 23/05/2011, 18h12
  5. Python probleme pour traitement fichier Xml avec l'API dom
    Par chenimitz dans le forum Général Python
    Réponses: 11
    Dernier message: 30/10/2007, 19h34

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