Java/XML : Le Parser de Sun ? - Java - Programmation
Marsh Posté le 26-08-2003 à 17:13:35
J'sé pas, j'utilise xerces, au moins, c'est libre (ce qui ne l'empêche pas d'être de la merde, mais bon).
Marsh Posté le 26-08-2003 à 17:15:14
JAXP = Java API for XML Processing
c'est pas une implémentation, c'est une spécification. Xerces associé à Xalan est une implémentation de JAXP
(si je dis pas de conneries )
Marsh Posté le 26-08-2003 à 17:21:37
benou a écrit : JAXP = Java API for XML Processing |
Oki.
Bon en fait je me remet a Java (Aie) et je decouvre un peu plus profondement XML (re Aie).
J'ai donc pris un exemple sur le net (une sorte de Hello World en Java XML) pour pouvoir les implementer dans une application.
Il me chie dans la colle quand je fais ça :
import com.sun.xml.parser.*;
import org.xml.sax.*;
En fait ces librairies n'existent pas quand j e passe au compilateur (javac)
Saurais tu d'ou vient le pb ? (Un flag que j'aurais oublie ?)
Marsh Posté le 26-08-2003 à 17:22:00
kadreg a écrit : J'sé pas, j'utilise xerces, au moins, c'est libre (ce qui ne l'empêche pas d'être de la merde, mais bon). |
Parait qu'il n'est pas standard ?
M'enfin, en dernier recours...
Marsh Posté le 26-08-2003 à 17:26:24
ton package sun.com... est bizare : en principe c'est javax.xml.parsers.
d'ailleur un petit cou de google et hop : http://java.sun.com/xml/jaxp/dist/ [...] mmary.html
regarde en haut à droite.
=> faut pas utiliser cette classe là => ta class HelloXML est foireuse
Marsh Posté le 26-08-2003 à 17:28:06
samuelp a écrit : |
tin mais renseigne toi un peu avant de sortir des "y parait" !
http://xml.apache.org/xerces2-j/index.html -> search "JAXP"
Marsh Posté le 26-08-2003 à 17:34:56
benou a écrit : ton package sun.com... est bizare : en principe c'est javax.xml.parsers. |
Oki.
Bon import javax.xml.parser ne passe pas non plus, va falloir que je le debusque ce parser...
Marsh Posté le 26-08-2003 à 17:38:34
si t'es en JDK 1.4 tu devrais l'avoir direct.
sinon tu dois récupérer JAXP.
ensuite faut récupérer les implémentations de ces API => xerces & xalan sur xml.apache.org
Marsh Posté le 26-08-2003 à 17:38:52
Citation : |
J'ai compris...
Marsh Posté le 26-08-2003 à 17:40:51
samuelp a écrit : [quote]J'ai compris... |
remarque : en jdk1.4 ca fait partit des apis standards (les API, pas les implémentations)
edit : en fait je pense q'uil y a aussi une implémentation ...
Marsh Posté le 26-08-2003 à 17:41:57
En fait c'est bon je l'avais, c'est juste ValidatingParser qui n'existe plus
Marsh Posté le 26-08-2003 à 17:44:12
kadreg a écrit : J'sé pas, j'utilise xerces, au moins, c'est libre (ce qui ne l'empêche pas d'être de la merde, mais bon). |
Marsh Posté le 26-08-2003 à 17:44:29
benou a écrit : JAXP = Java API for XML Processing |
non non c'est juste
Marsh Posté le 26-08-2003 à 18:01:28
Je suis completement à la rue.
J'ai vu quelques exemples pour parser un fichier XML (par exemple, ignorer les commentaires, transformer certains caracteres speciaux, ou encore verifier la conformité d'un fichier XML)
Par contre, ce que j'aimerai bien, c'est d'avoir le principe de XSLT qui permet de transformer du XML en HTML. Je m'explique : si j'utilise le XML, c'est surtout pour stocker des informations (dictionnaires) que je pourrais ensuite reutiliser.
Par exemple
<?xml 1.0 ........>
<DTD .....>
<Dictionary lang='fr'>
<Module id='1'>
<attribute name='errorHandling'> Une erreur est survenue
</attribute>
</Module>
</Dictionary>
Voila en gros j'aimerai pouvoir, en fonction de l'id du module et du nom de l'attribut, recuperer les mots correspondants à la bonne langue.
A ce que j'ai vu, je pourrais donc verifier l'integritéé du XML, ignorer lesc commentaires que je pourrais mettre pour expliquer ma demarche...
Par contre, je ne capte pas comment je pourrais recuperer les mots.
Voici a quoi ressemble (en gros) un Parser :
Code :
|
Marsh Posté le 26-08-2003 à 18:06:38
bon, hé ...
http://www.google.fr/search?q=jaxp+tutorial
Marsh Posté le 26-08-2003 à 18:10:32
En fait j'en apprend touss les jours !
Il faudrait (arretes moi sir je me trompte) implementer une interface HandlerBase (et donc reimplementer toutes ses methodes) afin de pouvoir parser un fichier.
Pis encore, la methode startElement permet d'identifier les ouvertures de Tags.
Bon, si on faisait un Howto sur Prog pour XML, XSLT et Java-XML ?
Marsh Posté le 26-08-2003 à 18:12:00
ouais ben t'as pas fini d'apprendre ...
ce que tu dis c'est pour parser ton doc en mode SAX. C'est pas forcément une bonne idée.
lit un tutoriel bordel !
Marsh Posté le 26-08-2003 à 18:32:19
benou a écrit : ouais ben t'as pas fini d'apprendre ... |
Oki.
Bon j'ai encore regardé qqs tutoriels (va me falloir tout de meme un bon livre). Si j'ai bien compris :
JAX : C'est surtout une methode utile quand on reçoit des flux XML via le reseau ou pour tout echange d'infos en faible proportion
Sinon, il faut utiliser DOM c'est ça ? DOM permet de creer un arbre avec toutes les infos concernant le fichier XML et ainsi nous pouvons exploiter facilement les attributs et les elements d'un fichier XML. En gros, c'est ça ?
Marsh Posté le 26-08-2003 à 18:58:02
nan en gros c'est plutot l'inverse !
DOM c'est bien pour le petits doc XML en faible volume parce que c'est lourd en utilisation mémoire. La construction de l'arbre DOM est très gourmande en place mémoire. Mais une fois construit il est facile et rapide à utilisé.
le SAX c'est bien quand tu as des gros volume car tu lis le fichier au fur et à mésure, mais du coup tu dois souvent tout refaire à la main (pas de XSLT, pas de XPATH, etc ...) ou utiliser des outils adaptés (générateur d'encodeur/décodeur de bean en XML utilisant SAX, etc ...)
Marsh Posté le 27-08-2003 à 08:17:51
benou a écrit : nan en gros c'est plutot l'inverse ! |
Oki.
Bon en gros j'ai bcp a apprendre.
Je viens meme de voir que l'on peut (facilement ?) parser un fichier XML avec l'importation des librairies : nanoXML
Par contre je sais pas si c'est standard
Marsh Posté le 27-08-2003 à 08:58:57
samuelp a écrit : |
non
Si tu veux qqch de très simplet et complet (mais également non standard) prends JDom (www.jdom.org). C'est très intuitif
Marsh Posté le 27-08-2003 à 09:07:00
DarkLord a écrit : |
Merci
Sinon, je remarque un truc etrange :
J'ai donc téléchargé le nanoxml
Le repertoire de mon projet est le suivant :
/home/samuelp/software/projet
dans le projet y 2 arborescences :
-> com/easysoftware/installer
-> net/n3/nanoxml
Dans la premiere arborescence y a mon projet.
Dans mon fichier qui contient la methode main j'ai fait un :
package com.easysoftware.installer
Comme ça je positionne mon projet.
Helas quand je fais un :
import net.n3.nanoxml.* ;
Il me dit qu'il ne trouve rien à cette position
Si bien que si je redescend d'un repertoire (package projet.com.easysoftware.installer) là il me trouve bien le import projet.net.n3.nanoxml.*, mais le probleme c'est que ça fout la merde dans les packages importes (qui sont tous positionné avec import net.n3.nanoxml)
Quelqu'un aurait une explication ?
Marsh Posté le 27-08-2003 à 17:00:02
J'ai trouvé. En fait faut placer le repertoire net dans le repertoire com
Marsh Posté le 27-08-2003 à 17:32:15
ca m'étonnerait que ce soit la solution
Marsh Posté le 27-08-2003 à 18:16:30
DarkLord a écrit : ca m'étonnerait que ce soit la solution |
Bah apres ça compile
Et XMLElement fonctionne.
A moins que mon IDE soit mal configuré (bah vi j'utilise Forte) cette solution fonctionne
Marsh Posté le 27-08-2003 à 19:14:12
ReplyMarsh Posté le 27-08-2003 à 19:22:07
the real moins moins a écrit : ton ide est mal configuré |
Donc si je fais un :
package com.repertoire1.repertoire2.installer
et que le repertoire net se trouve dans le meme repertoire que le repertoire com, je devrais pouvoir utiliser :
import net.n3.nanoxml.* ?
Ok, je vais me renseigner
Marsh Posté le 27-08-2003 à 19:25:39
ReplyMarsh Posté le 27-08-2003 à 19:45:20
Bon vla le programme :
Code :
|
Vla comment se dispose mes repertoires :
lib -- com
-- Sowtware
-- Installer
-- fichier.java
-- net
-- n3
-- nanoxml
-- fichiers.java
quand je fais un javac fichier.java ça me sort comme erreur :
Citation : |
Pourtant ça devrait marcher
Marsh Posté le 27-08-2003 à 19:50:23
J'ai pigé.
Si j'utilise javac il faut que je me place au niveau en dessous du com (dans le repertoire lib)
Marsh Posté le 27-08-2003 à 19:52:55
ben oui
ps: lib c'est pour library, pq tu fous tes sources là!?
ps2: pq tu utilises pas un jar de nanoxml !?
Marsh Posté le 27-08-2003 à 19:53:22
samuelp a écrit : J'ai pigé. |
PS : pas de majuscule dans les noms package !!
Marsh Posté le 27-08-2003 à 19:56:54
the real moins moins a écrit : ben oui |
Ben je sais pas. Je n'ai pas encore commencé le developpement de l'installer, mais je changerai certainement en src
Sinon pour le jar, j'y ai pensé, mais bon, ça mange pas de pain de savoi comment est constitué le paquetage et ça aide pour les chiens d'arret pour debuguer
Marsh Posté le 27-08-2003 à 19:57:18
ReplyMarsh Posté le 27-08-2003 à 20:02:07
samuelp a écrit : |
le totoz c'était pas pour les majuscules ...
comment ca se fait que la racine de tes package est dans le rep lib ???
Marsh Posté le 27-08-2003 à 20:06:27
benou a écrit : |
Je tiens a preciser que c'est une ebauche de conception. J'aime bien savoir comment ça marche avant de concevoir (UML powa) puis programmer.
Je ne connais pas du tout le normalisme Java. Maintenant je sais qu'il ne faut pas mettre ça dans le lib mais plutot dans un repertoire appelé src (enfin je crois)
Marsh Posté le 27-08-2003 à 20:26:10
logiquement un projet java t'as au moins 3 rep :
- src : racine des packages dans lequels y a les sources
- classes : répertoire de compilation
- lib : dans lequels y a les jar à ajouter au classpath
Marsh Posté le 26-08-2003 à 17:12:42
Bonjour,
je ne sais pas si vous connaissez le Parser de Sun (JAXP pour Java Application Xml Parser), l'un des plus standards.
J'essaye de le telecharger via le site de Sun mais je n'y arrive point : seules les specifications sont disponibles.
Savez vous comment je peux obtenir ce Parser pour ma plateforme (Linux) sachant que j'utilise le SDK 1.4.2 (qui ne comporte pas ce Parser) ?