Java/XML : Le Parser de Sun ?

Java/XML : Le Parser de Sun ? - Java - Programmation

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) ?

Reply

Marsh Posté le 26-08-2003 à 17:12:42   

Reply

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


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

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 :/)


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

Marsh Posté le 26-08-2003 à 17:21:37    

benou a écrit :

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 :/)


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 ?)

Reply

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

Reply

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


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

Marsh Posté le 26-08-2003 à 17:28:06    

samuelp a écrit :


Parait qu'il n'est pas standard ?


tin mais renseigne toi un peu avant de sortir des "y parait" !
 
http://xml.apache.org/xerces2-j/index.html -> search "JAXP"


Message édité par benou le 26-08-2003 à 17:28:18

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

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


 
Oki.
Bon import javax.xml.parser ne passe pas non plus, va falloir que je le debusque ce parser...

Reply

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


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

Marsh Posté le 26-08-2003 à 17:38:52    

Citation :


 
javax.xml.parsers  
org.w3c.dom  
org.xml.sax  
org.xml.sax.helpers  
 
Attention : cette librairie ne fait pas partie du JDK ! Vous pouvez la télécharger à partir du site de Sun. Toutes les classes sont stockées dans deux archives JAR. Il vous faut donc, pour pouvoir les utiliser, ne pas oublier de lier les archives à Java via la variable d'environnement CLASSPATH. Sans cette étape, rien ne compilera !
 


 
J'ai compris...

Reply

Marsh Posté le 26-08-2003 à 17:38:52   

Reply

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 ... :/


Message édité par benou le 26-08-2003 à 17:41:26

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

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 :/

Reply

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


 
 [:rofl]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 26-08-2003 à 17:44:29    

benou a écrit :

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 :/)


 
non non c'est juste :o


---------------
Just because you feel good does not make you right
Reply

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 :
  1. By default, Comment nodes are created for each comment in an XML file. If it is not necessary to preserve the comments, there is no need to create the nodes. This example demonstrates how to create a parser that ignores comments.
  2.     try {
  3.         // Create a builder factory
  4.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  5.    
  6.         // Configure it to ignore comments
  7.         factory.setIgnoringComments(true);
  8.    
  9.         // Create the builder and parse the file
  10.         Document doc = factory.newDocumentBuilder().parse(new File("infilename.xml" ));
  11.    
  12.         // doc will not contain any Comment nodes
  13.     } catch (SAXException e) {
  14.         // A parsing error occurred; the xml input is not valid
  15.     } catch (ParserConfigurationException e) {
  16.     } catch (IOException e) {
  17.     }
  18. Here's some sample input:
  19.     <?xml version="1.0" encoding="UTF-8"?>
  20.     <!-- comment -->
  21.     <root>
  22.         Some text
  23.         <!-- comment -->
  24.         Some text
  25.     </root>
  26.     <!-- comment -->
  27. and output:
  28.     <?xml version="1.0" encoding="UTF-8"?>
  29.     <root>
  30.         Some text
  31.    
  32.         Some text
  33. </root>


Message édité par samuelp le 26-08-2003 à 18:02:30
Reply

Marsh Posté le 26-08-2003 à 18:06:38    

Reply

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 ?

Reply

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 !


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

Marsh Posté le 26-08-2003 à 18:32:19    

benou a écrit :

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 !


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 ?

Reply

Marsh Posté le 26-08-2003 à 18:58:02    

nan en gros c'est plutot l'inverse ! :D
 
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 ...)


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

Marsh Posté le 27-08-2003 à 08:17:51    

benou a écrit :

nan en gros c'est plutot l'inverse ! :D
 
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 ...)


 
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 :/

Reply

Marsh Posté le 27-08-2003 à 08:58:57    

samuelp a écrit :


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 :/


 
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


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 27-08-2003 à 09:07:00    

DarkLord 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


Merci :jap:
 
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 ?

Reply

Marsh Posté le 27-08-2003 à 14:23:52    

:bounce:

Reply

Marsh Posté le 27-08-2003 à 16:50:18    

Personne pour le dernier probleme ?

Reply

Marsh Posté le 27-08-2003 à 17:00:02    

J'ai trouvé. En fait faut placer le repertoire net dans le repertoire com :/

Reply

Marsh Posté le 27-08-2003 à 17:32:15    

ca m'étonnerait que ce soit la solution :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 27-08-2003 à 18:16:30    

DarkLord a écrit :

ca m'étonnerait que ce soit la solution :o


Bah apres ça compile :/
Et XMLElement fonctionne.
A moins que mon IDE soit mal configuré (bah vi j'utilise Forte) cette solution fonctionne

Reply

Marsh Posté le 27-08-2003 à 19:14:12    

ton ide est mal configuré


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

Marsh 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

Reply

Marsh Posté le 27-08-2003 à 19:25:39    

ben évidement


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

Marsh Posté le 27-08-2003 à 19:45:20    

Bon vla le programme :
 

Code :
  1. package com.Software.Installer;
  2. import java.io.* ;
  3. import net.n3.nanoxml.* ;
  4. public class essai {
  5.    
  6.     private XMLElement element ;
  7.     /** Creates a new instance of essai */
  8.     public essai() {
  9.     }
  10.    
  11.     /**
  12.      * @param args the command line arguments
  13.      */
  14.     public static void main(String[] args) {
  15.     }
  16.    
  17. }


 
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 :


essai.java:11: package net.n3.nanoxml does not exist
import net.n3.nanoxml.* ;
^
essai.java:18: cannot resolve symbol
symbol  : class XMLElement
location: class com.Software.Installer.essai
    private XMLElement element ;
            ^
2 errors
 
 


 
 
Pourtant ça devrait marcher :/


Message édité par samuelp le 27-08-2003 à 19:46:24
Reply

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)

Reply

Marsh Posté le 27-08-2003 à 19:52:55    

ben oui [:spamafote]
 
ps: lib c'est pour library, pq tu fous tes sources là!?
ps2: pq tu utilises pas un jar de nanoxml !?


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

Marsh Posté le 27-08-2003 à 19:53:22    

samuelp a écrit :

J'ai pigé.
Si j'utilise javac il faut que je me place au niveau en dessous du com (dans le repertoire lib)


[:totoz]
 
PS : pas de majuscule dans les noms package !! :o


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

Marsh Posté le 27-08-2003 à 19:56:54    

the real moins moins a écrit :

ben oui [:spamafote]
 
ps: lib c'est pour library, pq tu fous tes sources là!?
ps2: pq tu utilises pas un jar de nanoxml !?


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

Reply

Marsh Posté le 27-08-2003 à 19:57:18    

benou a écrit :


[:totoz]
 
PS : pas de majuscule dans les noms package !! :o


 
Ok message reçu ;)

Reply

Marsh Posté le 27-08-2003 à 20:02:07    

samuelp a écrit :


Ok message reçu ;)


le totoz c'était pas pour les majuscules ...
 
comment ca se fait que la racine de tes package est dans le rep lib ??? [:w3c compliant]


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

Marsh Posté le 27-08-2003 à 20:06:27    

benou 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 ??? [:w3c compliant]


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)

Reply

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


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

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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