Parser java xml ?

Parser java xml ? - Java - Programmation

Marsh Posté le 25-06-2003 à 11:42:40    

bonjour,
 
Je voudrais parser un doc xml en objet java, très simple.
Que me conseillez-vous? Avez-vous un exemple ?
(J'ai essayé de tester jaxb mais j'ai un pb avec le package primer.po, introuvable)
 
Merci de vos conseils

Reply

Marsh Posté le 25-06-2003 à 11:42:40   

Reply

Marsh Posté le 25-06-2003 à 11:46:09    

jaxb? tu veux parler de jaxp? parce que si c'est bien ca, je n'ai pas de trace d'un tel package.

Reply

Marsh Posté le 25-06-2003 à 11:47:34    

jaxb
 
il y a un exemple que je voudrais tester sur :
http://java.sun.com/webservices/docs/1.1/tutorial/doc/

Reply

Marsh Posté le 25-06-2003 à 11:48:09    

Xerces d'Apache est bien. Mais y en a d'autres (que je connais pas ; Xerces est le seul avec lequel j'ai déjà joué).
cf http://xml.apache.org/xerces2-j/index.html


---------------
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.
Reply

Marsh Posté le 25-06-2003 à 11:50:11    

pilou50 a écrit :

jaxb
 
il y a un exemple que je voudrais tester sur :
http://java.sun.com/webservices/docs/1.1/tutorial/doc/
 


Ok, je ne connais pas celui là. Mais jaxp, juste au dessus dans les liens fonctionne très bien et est super simple à utiliser.

Reply

Marsh Posté le 25-06-2003 à 13:20:14    

gizmo a écrit :


Ok, je ne connais pas celui là. Mais jaxp, juste au dessus dans les liens fonctionne très bien et est super simple à utiliser.


 
J'ai suivi tes conseils et j'uilise jaxp.  
Mais je ne comprends pas commend créer le 'handle' nécessaire (et à quoi ça correspond) :
saxParser.parse("priceList.xml", handler);  
 
Merci

Reply

Marsh Posté le 25-06-2003 à 13:29:28    

jdom, super simple [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-06-2003 à 13:31:17    

je vais chercher alors

Reply

Marsh Posté le 25-06-2003 à 14:04:44    

Argh !...
 
----------
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
        at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j
ava:1139)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:314)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:253)
        at Parser3.load_marche(Parser3.java:22)
        at Parser3.main(Parser3.java:32)
----------

Reply

Marsh Posté le 25-06-2003 à 14:23:07    

ton document est pas valide [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-06-2003 à 14:23:07   

Reply

Marsh Posté le 25-06-2003 à 17:56:58    

En effet. Merci!

Reply

Marsh Posté le 25-06-2003 à 17:58:28    

Citation :

J'ai suivi tes conseils et j'uilise jaxp.  
Mais je ne comprends pas commend créer le 'handle' nécessaire (et à quoi ça correspond) :  
saxParser.parse("priceList.xml", handler);  


Le choix d'un parser (ou plus précisément d'une API XML) dépendra de ce que tu veux faire sur ton document :
 - le parser (SAX) que tu as pris pour l'instant est de type évènementiel ; autrement dit, il impose de créer des 'handlers' pour définir un traitement automatique en fonction des données présentes dans ton doc;
 - si tu veux parcourir ton document manuellement, lire des données, en ajouter, en supprimer, etc, alors il te faut une API comme JDOM, Xerces ou DOM4J ; elle utilisera un parser basé sur SAX pour traduire ton fichier en objet Document que tu pourras ensuite parcourir comme bon te semble.
 
 

Citation :

Argh !...  
 
----------  
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.  
       at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.j  
ava:1139)  
       at javax.xml.parsers.SAXParser.parse(SAXParser.java:314)  
       at javax.xml.parsers.SAXParser.parse(SAXParser.java:253)  
       at Parser3.load_marche(Parser3.java:22)  
       at Parser3.main(Parser3.java:32)  
----------


Balance ton fichier si il n'est pas trop gros...

Reply

Marsh Posté le 25-06-2003 à 18:17:52    

Taiche a écrit :

Xerces est le seul avec lequel j'ai déjà joué

T'as gagné ? (petite forme aujourd'hui)

Reply

Marsh Posté le 25-06-2003 à 18:18:43    

nraynaud a écrit :

T'as gagné ? (petite forme aujourd'hui)


Pour l'instant, je gagne [:ddr555]  
Mais il prend sa revanche quand il peut lorsqu'il récupère un document XML tronqué :sweat:


---------------
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.
Reply

Marsh Posté le 25-06-2003 à 18:26:21    

Taiche a écrit :


Pour l'instant, je gagne [:ddr555]  
Mais il prend sa revanche quand il peut lorsqu'il récupère un document XML tronqué :sweat:

Cesse-donc d'utiliser des outils professionels pour t'amuser ! (oulala, c'est une petite dépression hivernale je crois)

Reply

Marsh Posté le 26-06-2003 à 10:54:19    


Merci pour ces explications.
Voila ce que je dois faire : Je récupère des données et crée des objets (beans) java avec ces données. Je me suis limité au parser SAX. Ca marche. (je n'ai pas forcément le temps d'appronfondir).
 
Mais un autre problème est apparu :
Je ne peux pas parser des chaines qui contient des acccents. Merci d'avance pour votre aide.
 
par ex :
<nom>etienne</nom> va marche alors que :
<nom>étienne</nom> va lever une exception :
 
-------
org.xml.sax.SAXParseException: Erreur de conversion de caractÞre : "Malformed UT
F-8 char -- is an XML encoding declaration missing?" (le numÚro de ligne peut Ût
re trop bas).
        at org.apache.crimson.parser.InputEntity.fatal(InputEntity.java:1100)
        at org.apache.crimson.parser.InputEntity.fillbuf(InputEntity.java:1072)
        at org.apache.crimson.parser.InputEntity.isXmlDeclOrTextDeclPrefix(Input
Entity.java:914)
        at org.apache.crimson.parser.Parser2.maybeXmlDecl(Parser2.java:1009)
        at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:486)
        at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
        at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)
 
        at org.xml.sax.helpers.XMLReaderAdapter.parse(XMLReaderAdapter.java:223)
 
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:314)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:253)
        at Parser3.load_marche(Parser3.java:22)
        at Parser3.main(Parser3.java:32)
-------
 
(message posté aussi dans un nouveau thread)

Reply

Marsh Posté le 26-06-2003 à 13:59:52    

il faut que tu règle correctement l'encoding en ajoutant ca comme première ligne du fichier xml :  
 
<?xml version="1.0" encoding="ISO-8859-1"?>


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 27-06-2003 à 09:28:32    

benou a écrit :

il faut que tu règle correctement l'encoding en ajoutant ca comme première ligne du fichier xml :  
 
<?xml version="1.0" encoding="ISO-8859-1"?>
 


 
Très bien, merci beaucoup.
 
A +

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed