Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1048 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

XML

n°746526
wafae
Posté le 31-05-2004 à 19:06:15  profilanswer
 

Bonjour,
 Bienvenue à moi, c'est mon premier sos dans ce forum. j'ai un pb pour parser le fichier Translators.xml (que j'ai écris moi même avec Dom), mais ça ne marche pas.
Il n'ya pas des erreurs de compilation, donc les packages sont bien configurés, mais à l'exécution il me donne l'erreur  de NullPointerException à la ligne :  
typeClass=(String)eleMapNode.getNodeName();  
 
Donc il ne reconait pas les childs de <TranslatorMap> !
 
S'il vous plait, comme c'est assez urgent, pouvez-vous me répondre au plus vite!
Merci d'avance,[quote]
 
voici le code:
import java.io.*;
import javax.xml.parsers.*;  
//import com.sun.xml.tree.*;
import org.w3c.dom.*;
import java.util.*;
 
public class test{
 
public static void main (String argv []) throws DOMException {
     
     
     HashMap m_transMap =new HashMap();        
           try {
 
                Node titleNode,countNode,MapNode,eleMapNode;
                String count,typeClass,transClass;
 
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
               
                 DocumentBuilder builder = factory.newDocumentBuilder();
               
                 FileInputStream fis = new FileInputStream(new File("translators.xml" ));
 
 
 
                Document docTrans = builder.parse(fis);
               
                 
 
 
                titleNode = docTrans.getChildNodes().item(0);
               
                countNode= titleNode.getChildNodes().item(1);
                   
                Node mapNode=titleNode.getChildNodes().item(2);
                   
                Text countText = (Text)countNode.getChildNodes().item(0);
                count =countText.getData();
                 
             
 
                for (int i = 0; i < new Integer(count).intValue(); i++) {
                 
                eleMapNode=mapNode.getChildNodes().item(i);
 
                typeClass=(String)eleMapNode.getNodeName();
                 // System.out.println("typeClass="+ typeClass);    
                transClass=(String)(eleMapNode.getAttributes().item(0)).getNodeValue();
 
 
             
                Class clazz = Class.forName(transClass);
                m_transMap.put(typeClass, clazz.newInstance());
 
                                 
                  }
                 
              }  
 
                catch (ParserConfigurationException pce) {
 
                   
                pce.printStackTrace();
 
                     }
           
            catch(Exception ex){
               
                ex.printStackTrace();
                }
             
 
           }
}
 
 
Voici le fichier translators.xml
 
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>  
- <DataStorage DataStorage="DataOfTranslators">
  <NumberofTranslators>16</NumberofTranslators>  
- <TranslatorMap>
  <java.lang.String value="org.ungoverned.radical.util.translator.StringTranslator" />  
  <javax.swing.border.TitledBorder value="org.ungoverned.radical.util.translator.BorderTranslator" />  
  <javax.swing.border.MatteBorder value="org.ungoverned.radical.util.translator.BorderTranslator" />  
  <java.lang.Short value="org.ungoverned.radical.util.translator.ShortTranslator" />  
  <java.lang.Character value="org.ungoverned.radical.util.translator.CharacterTranslator" />  
  <java.lang.Long value="org.ungoverned.radical.util.translator.LongTranslator" />  
  <javax.swing.border.SoftBevelBorder value="org.ungoverned.radical.util.translator.BorderTranslator" />  
  <javax.swing.border.BevelBorder value="org.ungoverned.radical.util.translator.BorderTranslator" />  
  <java.awt.Color value="org.ungoverned.radical.util.translator.ColorTranslator" />  
  <java.lang.Double value="org.ungoverned.radical.util.translator.DoubleTranslator" />  
  <java.lang.Integer value="org.ungoverned.radical.util.translator.IntegerTranslator" />  
  <javax.swing.border.LineBorder value="org.ungoverned.radical.util.translator.BorderTranslator" />  
  <javax.swing.border.EtchedBorder value="org.ungoverned.radical.util.translator.BorderTranslator" />  
  <java.lang.Float value="org.ungoverned.radical.util.translator.FloatTranslator" />  
  <java.lang.Boolean value="org.ungoverned.radical.util.translator.BooleanTranslator" />  
  <javax.swing.border.EmptyBorder value="org.ungoverned.radical.util.translator.BorderTranslator" />  
  </TranslatorMap>
  </DataStorage>

mood
Publicité
Posté le 31-05-2004 à 19:06:15  profilanswer
 

n°746529
R3g
fonctionnaire certifié ITIL
Posté le 31-05-2004 à 19:12:03  profilanswer
 

deja utilises les balises [cpp] pour rendre ton code plus lisible ;)


---------------
Au royaume des sourds, les borgnes sont sourds.
n°746533
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 31-05-2004 à 19:19:19  profilanswer
 

Tu t'fais quand même pas mal chier :/
Déjà, pour les NullPointer, c'est passke tu testes pas ce que te retournent les méthodes de get et autres item(). C'est mal :o
Ensuite, pour récupérer les élements qui t'intéressent, vas-y plutôt à coups de getElementsByName(), ça ira plus vite que de faire des getChildNodes() dans tous les sens.
Sinon, faire un noeud pour compter les noeuds suivants... c'est crade. T'as la méthode getLength() dans NodeList qui fait déjà tout ça [:spamafote]
Enfin et pour terminer : tes noms de tags XML sont euh... pas très standards !


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°746535
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 31-05-2004 à 19:22:08  profilanswer
 

Ce que je ferais moi :
* parsing (en catchant bien les exceptions, sans faire un catch(Exception) de bourrin :o)
* NodeList mapList = document.getElementsByTagName("TranslatorMap" );
* if(mapList != null)
    count = mapList.getLength();
* boucle for, traitements, etc... avec les bons tests d'éléments non null.
Et roule :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°746550
wafae
Posté le 31-05-2004 à 19:41:24  profilanswer
 

Merci pour les réponses "non utiles"!
Jûsqu'à maintenant, je n'ai reçu que des remarques sur le code, que je vais modifier!
Rien sur le conteneu:
Ma question est loin de ce que vous m'avez répondu tous:Le tag  
<TranslatorMap> a normalement 16 childs:)-je ne suis pas entrain d eles compter, je sais qu'il y a getLength dans hashSet et nodeList....
Je ne comrends pas pourquoi (même en faisant le test avec print), ça me dit qui'il n'a pas de child!
Alors, svp donner moi une réponse utile et au fond du sujet!
 

n°746553
schnapsman​n
Zaford Beeblefect
Posté le 31-05-2004 à 19:43:10  profilanswer
 

wafae a écrit :


Ma question est loin de ce que vous m'avez répondu tous:Le tag


bon tu le met ce p..... de tag cpp! [:mmmfff]


Message édité par schnapsmann le 31-05-2004 à 19:43:20
n°746559
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 31-05-2004 à 19:47:00  profilanswer
 

wafae a écrit :


Alors, svp donner moi une réponse utile et au fond du sujet!


[:xx_xx]
Eh oh Bob, si tu te bouffes une NullPointer, c'est d'une part passke tu mates pas les retours que te font les méthodes que tu appelles et d'autre part passke tu ne te situes pas là où tu devrais te situer.
Le problème n'est pas un problème de fond comme tu as l'air de le croire ; c'est un problème de méthode et d'implémentation. Y a pas de problème métaphysique qui fait que le parser se viande tout seul, c'est juste que ton code étant quand même bien complexe pour parser une liste de noeuds, j'te donne des billes pour le simplifier et voir ce qui réparerait éventuellement le truc.
 
Sinon, une autre remarque "non utile" : rajoute des traces pour savoir ce qui se passe exactement dans ta boucle (et même avant, pour savoir ce que vaut count).


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°746610
wafae
Posté le 31-05-2004 à 20:13:48  profilanswer
 

J 'ai toujours lês mêmes erreurs, vous pouvez essayez vous aussi, il ya un problème de parsage!
Comme je vous dis j'ai fais le print pour tester..

n°746676
benou
Posté le 31-05-2004 à 21:02:12  profilanswer
 

ton erreur vient juste du fait que tu ne fais pas attention aux nodes que tu récupèrent : dans un document XML, beaucoups de noeuds sont des noeuds Texte ...

n°746680
benou
Posté le 31-05-2004 à 21:03:09  profilanswer
 

wafae a écrit :


Comme je vous dis j'ai fais le print pour tester..


surement pas parce que tu te serais vite rendu compte que ta boucle for est fait sur un noeud de type text et pas le noeud TranslatorMap ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  XML

 

Sujets relatifs
[PHP / XML] Problème de fichier UTF-8 [Résolu]IE affiche aléatoirement la page xhtml comme un document xml
XML et JDOM : afficher les noeuds en entier avec leur fils et attribus[XML] Lien entre le fichier xml et xsl
Moteur de recherche en PHP surun DOC XMLstockage des données dans un fichier XML en C++
[XML] Je ne veux que les 5 premiers!Générer un fichier xml à partir d'un xsd via php ?
[XML] Modification dynamique de page xmlStockage de donnees , Bdd ? , Xml ? Ini ?
Plus de sujets relatifs à : XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR