begin process at 2010 02 10 14:56:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Divers

 > 

java et SAX parser xml


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

java et SAX parser xml

samedi 9 octobre 2004 à 17:02:48 | java et SAX parser xml

kungouf

bonjour a tous

j'utilise le parser SAX en java pour recuperer des donnees provenant d'un fichier xml, et mon probleme est le suivant:

j'ai un plantage au moment de stocker les donnees dans un tableau de la methode si bien connu des habitue de java et sax:

public void characters (char buf [], int offset, int len){}


voici mon code:

public void startDocument () throws SAXException {
System.out.println("START DOCUMENT");
System.out.println("<?xml version='1.0' encoding='UTF-8'?>");
}

public void endDocument () throws SAXException {
System.out.println("END DOCUMENT");


for(int var=0; var < tableauPeres.size(); var++){

//debut nouveau rajout
JPanel lpanel = new JPanel(new GridLayout(1,1));

JLabel label = new JLabel("texte", SwingConstants.LEADING);
//JLabel label = new JLabel(listeFils[var], SwingConstants.LEADING);

label.setTransferHandler(new TransferHandler("text"));


//MouseListener listener = new DragMouseAdapter();
//label.addMouseListener(listener);



//affichage du titre
//System.out.println("nom"+nomTag);
TitledBorder t1 = BorderFactory.createTitledBorder((String) tableauPeres.get(var));

lpanel.add(label);
lpanel.setBorder(t1);
application.add(lpanel);
//fin nouveau rajout

var++;
}

if (indentLevel > 0) System.out.println("AIEEEE");

}

public void startElement (String name, AttributeList attrs)
throws SAXException {
tabs();


System.out.println("start element enclenche");
try{
if(name == "Name"){
i = 0;
}
else if(name == "ServiceRef"){
i = 1;
}
}
catch(Exception e){
System.err.println(e);
}

System.out.print("<" + name);
if (attrs != null) {
for (int i = 0; i < attrs.getLength (); i++) {
System.out.println();
tabs();
System.out.print(" ");
System.out.print(attrs.getName (i));
System.out.print(" = \"");
System.out.print(attrs.getValue (i));
System.out.print("\"");
}
}

if (attrs.getLength() > 0) { System.out.println(""); tabs(); }
System.out.println(">");
indentLevel++;
}

public void endElement (String name) throws SAXException {
indentLevel--;
tabs();
System.out.println("</" + name + ">");
}

public void characters (char buf [], int offset, int len)
throws SAXException {
String s = new String(buf, offset, len);


if (!s.trim().equals("")) {
System.out.println("characters enclenche ->semaphore: " + i);

if(i == 0){
tableauPeres.add(s);
}
else
tableauFils.add(s);

tabs();


System.out.println(s);
}
}




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:

if (!s.trim().equals("")) {
System.out.println("characters enclenche ->semaphore: " + i);
[#0000ff]
if(i == 0){
tableauPeres.add(s);
}
else
tableauFils.add(s);
[/#0000ff]
tabs();


System.out.println(s);
}



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
<Icon>
</Icon>
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.<init>(SimpleSaxXml.java:44)
at LabelDnD.<init>(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]


quelqu'un sait d'ou l'erreur pourrait provenir?
dimanche 10 octobre 2004 à 14:09:25 | Re : java et SAX parser xml

PijanaKrava

Membre Club
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 ;)
lundi 29 novembre 2004 à 16:19:13 | Re : java et SAX parser xml

tds

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}


Cette discussion est classée dans : java, system, out, at, enclenche


Répondre à ce message

Sujets en rapport avec ce message

SendMessage ne marche pas [ par matwiano ] salut j'ai telecharger smslib et j'ai placé les fichiers dans ces place la compilation sa marche mais l'execution ne marche pas il m'affiche le msg s ERREUR SENDMESSAGE [ par matwiano ] salut j'ai telecharger smslib et j'ai placé les fichiers dans ces place la compilation sa marche mais l'execution ne marche pas il m'affiche le msg su Erreur HTTP 500 pour une requtte HTTP avec servlet. [ par Spiycy ] slt, j'ai un probleme l'hors de connexion(authentification) dans un environnement client/serveur via les servlet. pour un outils de développement Ecli arraylist base de donnée [ par zedtimi ] bonjour tout le mondejai etabli une connection avec une base de donnée et maitenant je veut utiliser une arraylist ou un tableau pour sauvgardé mes do comparaison de 2 fichiers texte (pb boucle while je pense) [ par tomski ] Bonjour,Jessaye de comparer 2 fichiers texte ligne par ligne.Chaque ligne est decoupee (split(";")) et chaque mot est stocké dans un array.Ensuite je urgent [ par bawilar ] je souhaiterais avoir un eclaircissement sur un programme en java svp voici le code: import java.util.*; public class Boucle { public static v Ecriture dans un fichier [ par Darklecon ] Darklecon Impossible de saisir un entier en java , en utilisant la class console [ par lagdu ] Bonjour à tous.Je me permet de poster sur le forum affin de vous exposer mon problème.Je vais essayer d'etre le plus precis possible sur celui ci mais


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales