JAVA XML DOM Xerces

JAVA XML DOM Xerces - Java - Programmation

Marsh Posté le 19-04-2002 à 11:38:51    

Bon voila, je dois parser et generer des documents xml, mais je n ai  
jamais fait ca, quelqu un pourrait soit m expliquer soit me filer un  
site ou je pourrais trouver des expliquations car ca fait 2 jours que  
je galere et j arrive a rien  
Merci d avance

Reply

Marsh Posté le 19-04-2002 à 11:38:51   

Reply

Marsh Posté le 19-04-2002 à 11:50:53    

titou078 a écrit a écrit :

Bon voila, je dois parser et generer des documents xml, mais je n ai  
jamais fait ca, quelqu un pourrait soit m expliquer soit me filer un  
site ou je pourrais trouver des expliquations car ca fait 2 jours que  
je galere et j arrive a rien  
Merci d avance  




 
pourkoi ce sujet alors... XML suffisait? XSL ossi si tu veux, mais po java...
regarde le post du gars ki dit kil debute en XML, ya des liens.

Reply

Marsh Posté le 19-04-2002 à 11:51:26    

Pour parser, y'a les nouvelles classes des packages javax.xml dans le jdk 1.4 J'ai commencé hier, ça va vraiment tout seul : en gros, tu crées un parser  
 
SAXParserFactory factory = SAXParserFactory.newInstance();
  factory.setValidating(true);
  try {
      SAXParser parser = factory.newSAXParser();
 
comme ça, par exemple...
 
Et pour parser, tu fais ça :  
 
 parser.parse(in, DefaultHandler dh)
 
Tu verras, il faut lire la javadoc du DefaultHandler : toutes ses méthodes ne font rien. Il te suffit de créer ta sous-classe de DefaultHandler, en réécrivant les méthodes qui t'intéressent (ex : startElement(....) est appellée par le parser quand il rencontre une balise ouvrante, etc....)
 
C un peu zarb au début, mais si le XML est bien foutu, y'a pas de problème...
 
Pour générer du xml....bah là, j'ai pas fait!

Reply

Marsh Posté le 19-04-2002 à 11:51:50    

aaah a moins que tu veuille le faire autrement qu'avec IE??

Reply

Marsh Posté le 19-04-2002 à 12:00:11    

moué j'avais du mal comprendre la question, desolai :hello:

Reply

Marsh Posté le 19-04-2002 à 12:04:13    

titou078 a écrit a écrit :

Bon voila, je dois parser et generer des documents xml, mais je n ai  
jamais fait ca, quelqu un pourrait soit m expliquer soit me filer un  
site ou je pourrais trouver des expliquations car ca fait 2 jours que  
je galere et j arrive a rien  
Merci d avance  




 
Tu as déjà fait quoi. Tu bloques où. Perso, je n'ai pas vraiment envie à répondre à ton poste car il est trop vague. Si tu nous disais, j'ai fait tels trucs mais ca marche pas ou ca ne donne pas ce que je veux ou je n'arrive pas à faire tel truc. La c'est plutot: "ouais XML machin là je galère ca marche pas".
 
Répondre à ta question prendrait trop de temps et probablement tu perds pas mal d'aide et étant moins précis.


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

Marsh Posté le 19-04-2002 à 12:04:31    

le probleme gfive, c est que je suis un peu perdu avec toutes ces classes, je sais pas trop a quoi tout cela correspond(meme en lisant la javadoc), je sais juste qu'avec DOM on a une sorte d'arbre lorsque le document ets parsé.
et avec defaulthandler et la methode startElement, comment fait tu savoir de quel element il s'agit, en supposant qu'on est ca:
<TEXTE>Fais chier bordel</TEXTE>
Comment je fais pour recuperer la valeur?
Vois un document que j essai de parser(enfin je le simplifie car il fait 100Ko
<?xml version = '1.0'?>
<ROWSET>
   <document num="1">
      <MI_CONTROLEUR>380</MI_CONTROLEUR>
      <MI_NUMISSION>1884870</MI_NUMISSION>
      <MI_NUMEROANTENNE>C022001053040</MI_NUMEROANTENNE>
      <VI_NUMERO>1</VI_NUMERO>
      <MI_NUMNATIONALCC>200100256423</MI_NUMNATIONALCC>
      <MI_ADRESSE1>12 RUE CHARLES ROMME</MI_ADRESSE1>
      <MI_CODEPOSTAL>63400</MI_CODEPOSTAL>
      <MI_VILLE>CHAMALIERES</MI_VILLE>
      <MI_LOGEMENT>AA</MI_LOGEMENT>
      <MI_ENERGIE>GN</MI_ENERGIE>
      <MI_TYPEINSTAL>IN</MI_TYPEINSTAL>
      <AT_LIBELLE>LAVEST DANIEL</AT_LIBELLE>
      <CL_AUXILIAIRE>186712</CL_AUXILIAIRE>
      <CL_LIBELLE>E2S</CL_LIBELLE>
      <CL_TELEPHONE>0472435297</CL_TELEPHONE>
      <CL_QUALIFICATION>NQ</CL_QUALIFICATION>
      <CL_LIBELLE>E2S</CL_LIBELLE>
      <CL_TELEPHONE>0472435297</CL_TELEPHONE>
   </document>
</ROWSET>
 
Et comment fait t on pour recuperer avec les attibuts?
Merci d avance

Reply

Marsh Posté le 19-04-2002 à 12:05:06    

bin voilà qd tu veux ;)
 
Je regarde deux secondes...


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

Marsh Posté le 19-04-2002 à 12:09:28    

Quel parseur tu veux utilise déjà. Si tu veux utiliser DOM, moi perso j'utilise JDOM qui est très bien et très facile (www.jdom.org).
 
Ce que tu dois savoir c'est qu'il ne faut pas gérer des trop gros documents avec DOM.
 
Si tu choisis SAX bin en fait tu lis ton document de A à Z et il appelle des méthodes lorsqu'il recontres des tags bien précis (début d'élement et fin d'élement par exemple). C'est à toi dans ces méthodes de définir ce que tu veux faire (copier le contenu dans tel variable etc.)
 
A nouveau si tes fichiers sont relativement petits JDOM rulezz.


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

Marsh Posté le 19-04-2002 à 12:11:16    

Bon, alors, c assez simple :
 
public class MyHandler extends DefaultHandler {
 
private String tagName;
 
startElement(String uri,
                         String localName,
                         String qName,
                         Attributes attributes) {
 
//Lecture du tag texte :
 
if (qName.equals("TEXTE" )) {
    tagname = "TEXTE";    
}
 
...
}
 
 
characters(char[] ch,
                       int start,
                       int length) {
if (tagname.equals(TEXTE)) {
    String value = new String(ch, start, length);
    System.out.println("Le tag texte contient la chaîne "+value);
}
}
 
 
...
 
bon, voilà....Tu remarqueras que ce parser est plus adapté à du XML qui a ses données en tant qu'attribut des tags, mais bon, on s'en sort quand même..

Reply

Marsh Posté le 19-04-2002 à 12:11:16   

Reply

Marsh Posté le 19-04-2002 à 12:12:20    

DarkLord a écrit a écrit :

 
A nouveau si tes fichiers sont relativement petits JDOM rulezz.  




 
Ah, je vais aller voir, moi..
 
Mais bon, j'ai commencé hier, et mon xml fait 2Mo....j'ai bien fait de prendre SAX, alors?? :D

Reply

Marsh Posté le 19-04-2002 à 12:13:04    

et en utilisant DOM, sais tu comment on fait?

Reply

Marsh Posté le 19-04-2002 à 12:15:13    

jusqu a maintenant j essaye de tout faire avec apache, tomcat, xerces, sais tu comment on fait avec DOM?

Reply

Marsh Posté le 19-04-2002 à 12:21:23    

titou078 a écrit a écrit :

jusqu a maintenant j essaye de tout faire avec apache, tomcat, xerces, sais tu comment on fait avec DOM?  




 
apache, tomcat ???
 
je sais comment on fait avec DOM oui. Va déjà voir www.jdom.org c'est on ne peut plus clair (regardes nottament DOMBUilder et SAXBuilder qui te permette de construre une instance de Document à partir d'un stream genre fichier)


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

Marsh Posté le 19-04-2002 à 12:25:51    

Pour un fichier dans le genre de ce que tu as montré, avec SAX, tout mettre dans une hashtable est enfantin....Mais bon..

Reply

Marsh Posté le 19-04-2002 à 12:25:57    

DarkLord a écrit a écrit :

 
 
apache, tomcat ???
 
je sais comment on fait avec DOM oui. Va déjà voir www.jdom.org c'est on ne peut plus clair (regardes nottament DOMBUilder et SAXBuilder qui te permette de construre une instance de Document à partir d'un stream genre fichier)  




Apache et tomcat car on utilise le HTTP,
J ai essayer avec DOMBuilder, mais je n'arrive pas a generer mon document
Voici mon code
try
        {
            docBuildFact=DocumentBuilderFactory.newInstance();
            docBuildFact.setValidating(true);
            docBuildFact.setNamespaceAware(true);
        }
        catch(FactoryConfigurationError eF)
        {
            System.out.println(eF.getMessage());
        }
         
        try
        {
            docBuild=docBuildFact.newDocumentBuilder();
            System.out.println(docBuild);
        }
        catch(ParserConfigurationException ePC)
        {
            System.out.println("pb de docBuilder" );
            System.out.println(ePC.getMessage());
        }
        try
        {
            doc=(DocumentImpl)docBuild.parse(new InputSource(new FileInputStream(new File("c:"+File.separator+"tutu.xml" ))));
            docBuild.setErrorHandler(err.getErrorHandler());
            System.out.println(doc);
        }
        catch(SAXException eS)

Reply

Sujets relatifs:

Leave a Replay

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