Manipulation de document HTML en Java => rendre le code HTML propre ?

Manipulation de document HTML en Java => rendre le code HTML propre ? - Java - Programmation

Marsh Posté le 07-04-2003 à 12:34:58    

Voici mon problème : je réalise un programme qui est sensé lire le contenu d'un document HTML pour créer un document XML.
Pour l'instant, je récupère un Document (org.w3c.dom.Document) grâce à l'API JTidy (qui permet notamment de parser un fichier HTML).
Le problème, c'est que les fichiers HTML que je lis ne sont pas très stricts : le code HTML est généré par un éditeur (celui de WSAD=version commerciale d'Eclipse en l'occurence) et ce vilain ne ferme pas les balises INPUT. Résultat JTidy se perd un peu...
 
Exemple :
un bout de mon fichier ressemble à ca :

Citation :

<TD>
 <INPUT name="login" type="text" size="20">
</TD>
<TD>Coucou</TD>


 
JTidy me donne ca :

Citation :

<TD>
 <INPUT name="login" type="text" size="20">
  <TD>Coucou</TD>
 </INPUT>
</TD>


 
Autrement dit JTidy crée lui meme la balise fermante </INPUT>, mais pas au bon endroit.
Voici donc ma question : ai-je un moyen (en configurant JTidy ou l'éditeur HTML d'Eclipse) de fermer automatiquement les balises ? Ou alors je dois coder ca moi meme (si balise INPUT alors déplacer la balise TD...) ? Pour l'instant je n'ai rien trouvé dans la doc de Tidy...
Si vous connaissez une autre API pour manipuler de l'HTML en Java je suis preneur.
 
Merci d'avance


Message édité par swgreedo le 07-04-2003 à 12:36:02
Reply

Marsh Posté le 07-04-2003 à 12:34:58   

Reply

Marsh Posté le 07-04-2003 à 13:29:38    

J'avais déjà réfléchi à la question, et je n'ai pas trouvé mieux que d'écrire mon propre parser qui corrigent toutes les erreurs du fichier HTML. Parce qu'il n'y a pas que ce que tu as mentionné.
 
D'une part, une fois sur deux, les valeurs d'attributs ne sont pas entre guillemets, ce qui est contraire à toute grammaire XML.
 
Ensuite, certains éléments ne sont pas fermés : en XML, ils devraient être "auto-fermés", du genre "<BR/>.
 
Enfin, et c'est le pire, certains éléments sont mal imbriqués. Exemple typique :
  <FORM ...>
    <TABLE ...>
      <TR ...>
        <TD ...>
          ...
       </FORM ...>
      </TD ...>
    </TR ...>
  </TABLE ...>
Et là, accroche-toi pour faire parser ça par un parser XML...

Reply

Marsh Posté le 07-04-2003 à 14:25:24    

OK, je sais ce qui me reste à faire...
Merci pour ta réponse.
 
Si quelqu'un a une idée plus enthousiasmante...  :)

Reply

Sujets relatifs:

Leave a Replay

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