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 :

Liste d'element xml


Sujet :

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

  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut Liste d'element xml
    Bonjour a tous, voici tout dabord mon code, que j ai reduit au maximum

    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
     
    import java.util.List;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.xpath.XPath;
     
     
    public class Main {
     
    	static Element root2 = new Element("itf");
     
    	public static void main(String[] args) {
     
                            String itf = "path_de_mon_fichier";
    			String s2 = File_processing.itfReader(itf,root2);
    			root2 = Xml_transform.addHeader(s2,root2);
    			root2 = Xml_transform.addPrimary(s2,root2);
    			root2 = Xml_transform.addLayers(s2,root2);
     
    			try {
    				addHeightProperty(root2);
    			} catch (JDOMException e) {
     
    				e.printStackTrace();
    			}
     
     
    	}
     
    public static void addHeightProperty (Element root) throws JDOMException {
     
    		List<Element> listLayers = root.getChildren("layer");
     
     
    		int nb_Layer_XML2 = 
                    integer.parseInt((XPath.newInstance("count(//layer").valueOf(root)));
    		System.out.println(nb_Layer_XML2);
    		for (int i=1;i<listLayers.size();i++) {
    			System.out.println((listLayers.get(i)).getAttributeValue("name"));
    			XPath xpa = XPath.newInstance("//layer[@name=\""+(listLayers.get(i)).getAttributeValue("name")+"\"]");
     
    			Element a = (Element) xpa.selectSingleNode(root);
    			System.out.println(a.getAttributeValue("name"));
     
    		}
     
    			} 
    		}		
    	}
    }
    Je transforme en fait un fichier texte en document XML.
    J applique plusieurs autres methodes qui fonctionnent correctement et j appelle ensuite une methode addHeightProperty.
    Je creer une liste des element "layer" pour les rechercher ensuite dans le xml
    Mon element root n est pas vide
    Ma liste n est pas vide non plus
    Il contiennent tous les deux des elements "layer"

    Cependant, lorsque j essaie de compter mes layers avec du xpath, java m affiche 0
    Avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println((listLayers.get(i)).getAttributeValue("name"));
    je peux printer ce que je veux

    Mais

    lorsque je fais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    XPath xpa = XPath.newInstance("//layer[@name=\""+(listLayers.get(i)).getAttributeValue("name")+"\"]");
    			System.out.println(xpa.toString());
    			Element a = (Element) xpa.selectSingleNode(root);
    			System.out.println(a.getAttributeValue("name")); //ici la ligne 56 pour l erreur
    j ai cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.lang.NullPointerException
    	at Main.addHeightProperty(Main.java:56)
    	at Main.main(Main.java:28)
    A savoir egalement, que le meme code exactement,mais dans un workspace et une machine different, fonctionne parfaitement.

    en trippotant un peu la boucle et tout ca j arrive avec une IndexOutofBound index 168, alors que la taille max de ma liste est de 73...

    J ai essaye de m exprimer au plus clair
    Quelqu un peut il m aider?

  2. #2
    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 delta07 Voir le message
    Bonjour a tous, voici tout dabord mon code, que j ai reduit au maximum
    Ah non. il y a plein de choses qui servent à rien, là-dedans. Par contre, tu aurai pu y ajouter les données XML que tu utilises, histoire qu'on puisse copier/coller ton code chez nous, et voir directement ce que ça donne.
    Cela t'aurait obligé à construire un ensemble de données avec lesquelles le problème se pose, et en essayant de faire ça, tu aurais trouvé le problème.

    Au hasard, comme ça, je soupçonne que certains de tes <layer> n'ont pas d'attribut name et que par conséquent tu te retrouves à chercher "//layer[@name='null']" ce qui ne doit pas renvoyer grand-chose.

    Bon, et puis, je comprends pas ce que tu essaies de faire, mais il est probable que c'est pas comme ça qu'on fait. À quoi ça rime de faire une expression XPath qui dépend du contenu du document, je te le demande ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut
    Voici en premier lieu un bout de xml que je traite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <layer name="POLYMIDE" type="DIELECTRIC">
        <property name="THICKNESS" type="couple">1.2397</property>
        <property name="MEASURED_FROM" type="couple">TOP_OF_CHIP</property>
        <property name="SW_T" type="couple">1.2397</property>
        <property name="TW_T" type="couple">1.2397</property>
        <property name="ER" type="couple">3.3</property>
      </layer>
    Deuxiemement tous les layers ont un attribut name, c est sur. L'erreur apparait a n importe quels layers du xml.

    Et pour la derniere question, j ai besoin de faire une liste de layer, et ensuite de les rechercher precisement a un moment donne.D ou la necessite de donner un nom dans le xpath.
    Le code ici est certainement faux,car il sert plus de debug qu a autre chose, mais la n est pas la question.Ce qui me pose probleme c est que ce meme code fonctionne parfaitement sur une autre machine avec le MEME document xml, et qu il me sort une erreur d index sur ma machine...

  4. #4
    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
    Oui non, je... C'est pourtant pas compliqué : un tout petit fichier .java, on le copie - juste lui - dans notre Eclipse, on le lance, et BAM ! On a la même erreur. Tu peux nous faire ça ou pas ?
    (À la rigueur, si on doit garder le XML dans un fichier à côté nommé doc.xml, ça va aussi.)

    Et pour la derniere question, j ai besoin de faire une liste de layer, et ensuite de les rechercher precisement a un moment donne.D ou la necessite de donner un nom dans le xpath.
    Oui mais si tu as déjà la liste, qu'est-ce qu'il y a à aller chercher ? C'est des références, c'est ça ? J'admets que ça se tiendrait. Mais il faut éviter, et en général ça s'évite très bien, parce que ça se construit pas comme ça, du XPath dynamique. Il faut faire gaffe aux échappements.

    Ce qui me pose probleme c est que ce meme code fonctionne parfaitement sur une autre machine avec le MEME document xml, et qu il me sort une erreur d index sur ma machine...
    Oui non mais, ce que ça veut dire, c'est qu'il y a un bug dans ce que tu ne nous montres pas, ça.
    Alors ça pourrait être dans une JRE ou dans JDOM ou dans Jaxen, mais a priori je soupçonnerais plutôt que tu ne fais pas ce que tu nous dis que tu fais. Donc il faudrait commencer par le prouver : tu fais un petit programme, petit mais entier, qui compile tout seul, direct, rien à faire, et qui a précisément ce problème, et tu nous le donnes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 194
    Par défaut
    Voici le code au plus simple :

    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
     
     
     
     
    import java.io.IOException;
     
     
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
     
     
    public class Main {
     
    	/**
             * @param args
             * @throws JDOMException 
             */
    	static Element root2 = new Element("itf");
     
     
    	public static void main(String[] args ) throws IOException, JDOMException{
    		String itf = "path_de_mon_fichier";
    			String s2 = File_processing.itfReader(itf,root2);
    			root2 = Xml_transform.addHeader(s2,root2);
    			root2 = Xml_transform.addPrimary(s2,root2);
    			root2 = Xml_transform.addLayers(s2,root2);
     
    			ITFAddon.addHeightProperty(root2);
    	}
     
    public static void addHeightProperty (Element root) throws JDOMException {
     
    		List<Element> listLayers = root.getChildren("layer");
    			for (int i=listLayers.size()-1;i>0;i--) {
    			XPath xpa = XPath.newInstance("/itf/layer["+i+"]");
    			Element a = (Element) xpa.selectSingleNode(root);
    			if (!a.getAttributeValue("type").equals("VIA")) {      <===erreur ici
    				Double h = computeLayerHeight(i,root);
    				setLayerHeight(a,h);
    			} 
    		}		
    	}
     
    }
    Et l erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Exception in thread "main" java.lang.NullPointerException
    	at addHeightProperty(Main.java:26)
    Je ne peux donner aucune autre information car les documents sont confidentiels. Pas de fichier texte ni de fichier xml.Je ne devrais meme pas fournir ce bout de code.

    Je repete qu exactement le meme code avec les meme documents, mais dans un autre workspace sur une autre machine, marche parfaitement bien.

    Ensuite thelvin, je ne vois pas trop ce que j ai a prouver. Mes connaissances sont certes limiter en Java mais je ne suis pas la pour ameliorer mon code ni pour que quelqu un l ameliore.J ai un souci au niveau de cette erreur et c est tout.

  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 delta07 Voir le message
    Je ne peux donner aucune autre information car les documents sont confidentiels.
    Tu peux en écrire un autre, tout petit, qui ne contient aucune donnée utile mais qui a exactement le même problème que ce dont tu nous parles.

    Citation Envoyé par delta07 Voir le message
    Je ne devrais meme pas fournir ce bout de code.
    Tu peux en écrire un autre, tout petit, de A à Z, qui a le problème dont tu parles et qui n'a que ça. C'est d'ailleurs ce que je te demande depuis des plombes.

    Concrètement tu es en train de nous dire "dites, j'ai un problème sur mon ordi, vous sauriez d'où ça vient ?"
    Non, on sait pas. On a besoin de savoir ce que tu fais avec.

    Citation Envoyé par delta07 Voir le message
    Je repete qu exactement le meme code avec les meme documents, mais dans un autre workspace sur une autre machine, marche parfaitement bien.
    Probablement une question de configuration de workspace, ou de comportement dépendant de l'environnement, donc. Quoi précisément, on pourrait peut-être le dire si on savait ce que tu fais.

    Citation Envoyé par delta07 Voir le message
    Ensuite thelvin, je ne vois pas trop ce que j ai a prouver.
    Ben, que cette erreur existe. Tu nous le dis beaucoup, et tu nous dis même des trucs, "regardez, si vous aviez vous aussi la même erreur sur votre ordi, vous auriez cette exception qui s'affiche !"
    Mais on a pas la même erreur sur notre ordi, et aucune exception ne s'affiche. Marre des paroles, je veux des preuves. Prouve que cette erreur existe, en nous donnant les moyens de l'avoir sur notre ordi.
    Ou, au moins, un truc qui, sur ton ordi sur ton workspace, a bel et bien l'erreur. Tant pis s'il ne l'a pas sur nos ordis, on saura peut-être la provoquer par nous-mêmes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. afficher une liste d'elements d'un fichier xml
    Par kossistus dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/04/2011, 12h10
  2. [XML]Liste élément XML
    Par SteelBox dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 15/06/2006, 00h11
  3. Modifier element XML
    Par hletellier dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/10/2005, 14h43
  4. [DOM] Suppression d'un element XML
    Par chabada dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 15/06/2005, 10h19
  5. Réponses: 2
    Dernier message: 07/01/2005, 20h40

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