De la manière d'exploiter une api de parsing xml (JAXP)

De la manière d'exploiter une api de parsing xml (JAXP) - Java - Programmation

Marsh Posté le 07-05-2004 à 16:59:41    

Juste une petite question. J'ai un fichier xml. Par exmple :


<a name="mon a">
  <1 name="mon un">
    <aa name="mon aa"></aa>
    <aa name="mon aba"></aa>
  </1>
  <1 name="autre 1">
    <aa name="mon aa"></aa>
  </1>
</a>


Plus complexe bien sur.
J'ai besoin de garder ça en mémoire, et de bosser dessus.
Si je crée des bean "a", "1", et "aa" pour stocker les données contenues dans l'arbre, au lieu d'utiliser le modèle DOM précédement construit, ça vous choque ?
Genre un bean "a" qui à pour membre une Hashtable référençant les "1" qui lui appartiennent. les bean 1 ont aussi une Hashtable pour référencer les "aa", etc...
Vous pensez que je ferais mieux de ne rien réécrire, et d'utiliser plutôt la structure DOM générée automatiquement, plutôt que de la parcourir pour générer mes beans ?
 
Donnez votre avis svp, même brièvement. c'est important.
Merci.


Message édité par El_gringo le 07-05-2004 à 17:00:40
Reply

Marsh Posté le 07-05-2004 à 16:59:41   

Reply

Marsh Posté le 07-05-2004 à 17:08:57    

JDom me semble plus simple et plus léger que DOM
Mais je me trompe peut-être (pour la légèreté).

Reply

Marsh Posté le 07-05-2004 à 17:10:51    

Je parle pas d'écrire une autre API que DOM. Dsl, je m'exprime mal je crois.
en fait j'oppose de modèles :
1) utiliser la structure DOM obtenue par parsing pour générer des Bean de stockage.
2) conserver la structure DOM, et l'interprêter "à la volée", selon les besoin.
 
Est ce que vous privilègeriez une des 2 méthodes systèmatiquement ?
Est ce qu'une des 2 vous parait mauvaise, si oui, pourquoi ?

Reply

Marsh Posté le 07-05-2004 à 17:13:47    

des objets, bordel, des objets!


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

Marsh Posté le 07-05-2004 à 17:18:35    

El_gringo a écrit :

Je parle pas d'écrire une autre API que DOM


 
Moi non plus.
JDom est une API Java qui construit une hiérarchie d'objets en mémoire, comme DOM, mais c'est plus facile à utiliser car les éléménts XML sont un peu plus typés (Element, Attribute, Text, CDATA, etc.) alors qu'avec DOM tu récupère très souvent des Node qui peuvent être n'importe quoi (aussi bien un Element qu'un noeud texte). C'est chiant, faut caster de partout.

Reply

Marsh Posté le 07-05-2004 à 17:18:39    

Mais dans la solution 2, quand je parle de l'interpr^éter à la volée, ça utilise des objets aussi. Juste un converse le stockage dans l'arbre DOM, et les objets "aa", "1", .. servent juste à encapsuler l'arbre DOM.
(je précise que je soutient pas cette méthode. justement. je cherche des argument contre...)

Reply

Marsh Posté le 07-05-2004 à 17:19:44    

pascal34 a écrit :

Moi non plus.
JDom est une API Java qui construit une hiérarchie d'objets en mémoire, comme DOM, mais c'est plus facile à utiliser car les éléménts XML sont un peu plus typés (Element, Attribute, Text, CDATA, etc.) alors qu'avec DOM tu récupère très souvent des Node qui peuvent être n'importe quoi (aussi bien un Element qu'un noeud texte). C'est chiant, faut caster de partout.


 
Merci. Mais c'est pas la question que je me pose.

Reply

Marsh Posté le 07-05-2004 à 17:19:58    

bah tu fais de la programmation orientée objet non?
bah voilà ton argument.
 
(client.getName() me parait plus net que clientDoc.getChild("name" ).getTextValue() nan? [:mlc])


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

Marsh Posté le 07-05-2004 à 17:21:54    

El_gringo a écrit :

Mais dans la solution 2, quand je parle de l'interpr^éter à la volée, ça utilise des objets aussi. Juste un converse le stockage dans l'arbre DOM, et les objets "aa", "1", .. servent juste à encapsuler l'arbre DOM.
(je précise que je soutient pas cette méthode. justement. je cherche des argument contre...)


 
Faut pas être pour ou contre.
Simplement c'est pas optimal d'obtenir une arbo DOM pour la convertir
en une autre arbo d'objets !!!
Ca serait plus efficace de parser avec SAX si tu veux construire ta propre arbo.
 
C'est ce que j'ai du faire pour un projet d'editeur XML spécialisé

Reply

Marsh Posté le 07-05-2004 à 17:23:56    

En fait je suis pas assez précis dnas mon expliquation.
Dans les 2 cas on à un objet "Client", avec une méthode getName.
Mais dans la méthode 1 on utilise un arbre DOM pour générer des objets qui reproduisent la structure de l'arbre (avec des Hashtable) en stockant les sous objets.
Dans la méthode 2 on généré les objets au besoin, en passant le noeud qui correspond au "client" (par exemple) au constructeur. Et la méthode client.getName() contiendra le code this.getChild("name" ).getTextValue()
 
Tu vois ce que je veux dire ?

Reply

Marsh Posté le 07-05-2004 à 17:23:56   

Reply

Marsh Posté le 07-05-2004 à 17:24:38    

bon ben alors les 2 methodes sentent des pieds [:itm]


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

Marsh Posté le 07-05-2004 à 17:24:40    

...2 avis opposés entre -- et Pascal ?

Reply

Marsh Posté le 07-05-2004 à 17:24:58    

the real moins moins a écrit :

bon ben alors les 2 methodes sentent des pieds [:itm]


 
Et c quoi qui sent bon ?

Reply

Marsh Posté le 07-05-2004 à 17:25:39    

du "vrai" objet, et passage à l'xml seulement en entrée et sortie, c-a-d quand t'as effectivement besoin d'xml


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

Marsh Posté le 07-05-2004 à 17:27:09    

the real moins moins a écrit :

du "vrai" objet, et passage à l'xml seulement en entrée et sortie, c-a-d quand t'as effectivement besoin d'xml


 
Ben la 1ère méthode c'est ça.
XML en entrée.
reproduction de la hérarchie dans des bean spécifiques.
Abandon du modèle DOM constuit.
 
 
XML généré si nécessaire.

Reply

Marsh Posté le 07-05-2004 à 17:28:31    

the real moins moins a écrit :

du "vrai" objet, et passage à l'xml seulement en entrée et sortie, c-a-d quand t'as effectivement besoin d'xml


 
Là je suis d'accord. XML doit être un format de sérialisation comme un autre pour une appli.

Reply

Marsh Posté le 07-05-2004 à 17:28:55    

pascal34 a écrit :

Là je suis d'accord. XML doit être un format de sérialisation comme un autre pour une appli.


 
c pas ce que j'ai compris que tu disais...

Reply

Marsh Posté le 07-05-2004 à 17:31:15    

El_gringo a écrit :

c pas ce que j'ai compris que tu disais...


 
Une fois que tu as analysé ton XML (avec DOM, SAX ou autre), tu travailles avec les objets , plus directement avec le XML.

Reply

Marsh Posté le 07-05-2004 à 17:34:08    

El_gringo a écrit :

Ben la 1ère méthode c'est ça.
XML en entrée.
reproduction de la hérarchie dans des bean spécifiques.

ha, ton histoire d'hashtable m'a laissé pensé le contraire.
bah voilà


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

Marsh Posté le 08-05-2004 à 15:02:24    

the real moins moins a écrit :

ha, ton histoire d'hashtable m'a laissé pensé le contraire.
bah voilà


 
Mon histoire d'Hashtable, c'est pour reproduire les dépendances induite par le XML, dans mes bean.
Exemple :
<entreprise name="Microsoft">
  <employe name="Bill"/>
  <employe name="Roberto"/>
<entreprise>
 
Ben je vais avoir une classe Entreprise, qui à 2 attributs :
- une String : name
- une Hashtable : employe, dans laquelle la clé est un String (nom d'employé), et la valeur est un bean "Employe".
C'est logique ça, vous trouvez pas ?

Reply

Marsh Posté le 08-05-2004 à 15:40:34    

ça peut se défendre oui ;)  
mais il me semble qu'il faut penser dans le sens inverse: définir d'abord ton objet, ensuite l'xml..


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

Marsh Posté le 08-05-2004 à 15:40:54    

sinon, employé, en anglais c'est employee avec 2 e ;)


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

Marsh Posté le 10-05-2004 à 08:49:10    

the real moins moins a écrit :

ça peut se défendre oui ;)  
mais il me semble qu'il faut penser dans le sens inverse: définir d'abord ton objet, ensuite l'xml..


 
Tant mieux, tant mieux.  
Merci pour ces commentaires.

Reply

Marsh Posté le 10-05-2004 à 08:50:16    

the real moins moins a écrit :

sinon, employé, en anglais c'est employee avec 2 e ;)


 
C'est parce que j'écrivais en franglais. dans cette langue, employe, c comme ça. :hello:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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