voila en gros ce qui se deroule dans mon programme:
1- parcours du fichier xml par le parser SAX
2- a chaque tag appel de la methode public void startElement() ->
si le tag s'appelle "Name" (name == "Name"), je met la valeur d'une variable i=0
sinon (si name == "ServiceRef") je met la valeur de la variable i=1
3- si le tag n'est pas vide (donc s'enclenche a chaque fois que je tombe sur un tag "Name" ou "ServiceRef" dans mon cas)
alors je stocke la donnee dans une collection en fonction du type de donnee dans la collection approprie:
voila ca devrais fonctionner, seulement voila au moment de l'affectation des valeurs dans le tableau voila ce que j'ai en output:
START DOCUMENT
<?xml version='1.0' encoding='UTF-8'?>
#e2001c java.lang.NullPointerException
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:658)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at org.xml.sax.helpers.XMLReaderAdapter.parse(XMLReaderAdapter.java:223)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:314)
/#e2001c start element enclenche
<Services
xmlns = "http://www.hp.com/OV/opcsvc"
>
start element enclenche
<Service>
start element enclenche
<Label>
</Label>
start element enclenche
start element enclenche
<Name>
characters enclenche ->semaphore: 0
saga
</Name>
start element enclenche
<Source>
start element enclenche
<Composition>
</Composition>
start element enclenche
<ServiceRef>
characters enclenche ->semaphore: 1
#e2001c at javax.xml.parsers.SAXParser.parse(SAXParser.java:253)
at SimpleSaxXml.(SimpleSaxXml.java:44)
at LabelDnD.(LabelDnD.java:102)
at LabelDnD.createAndShowGUI(LabelDnD.java:156)
at LabelDnD.access$0(LabelDnD.java:147)
at LabelDnD$1.run(LabelDnD.java:233)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
/#e2001c
PijanaKrava
Messages postés26Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention23 décembre 2004 10 oct. 2004 à 14:09
ben t'as fait LA grosse erreur à pas faire avec les String : utiliser == pour comparer 2 chaînes.
Le == teste si les 2 objets ont la même référence (adresse en mémoire).
Pour comparer les valeurs faut utiliser la méthode equals ! Ce qui est bizarre c'est que dans la méthode characters tu utilise equals alors je vois pas pourquoi dans startElement c'est == !
Grosse étourderie répétée par 2 fois !!
rhalala pas sérieux tout ça ..... :p je déconne ça peut arriver à tout le monde ;)
cs_tds
Messages postés351Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 9 décembre 2004 29 nov. 2004 à 16:19
Si tu veux vraiment comparer 2 String avec == alors tu dois reférencer tes String dans le String Pooler grâce à la méthode intern() de la Classe String à creuser pour les curieux :)
B@ron {EU.BELGIUM}