Convertir les tableaux html en XML

cs_asle Messages postés 8 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 13 septembre 2010 - 24 déc. 2009 à 07:58
cs_asle Messages postés 8 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 13 septembre 2010 - 24 déc. 2009 à 08:01
salut,

j'ai le code suivant qui permet d'extraire un tableau html et le transformer en xml:

import org.htmlparser.*;
import org.htmlparser.util.*;
import org.htmlparser.filters.*;

import java.io.*;

import org.jdom.*;
import org.jdom.output.*;
public class testParser5
{
static String[][] matrice=new String[3][5];
static int i=0,j=0,ligne,td;
static Element racine = new Element("Table");
static org.jdom.Document document = new Document(racine);
public static void displayTree(Node n)
{
if (n instanceof Tag)
{
Tag t = (Tag)n;
if (t.getTagName().equals("TR"))
{
System.out.println("\n-------------------------------------------------------");
ligne++;
}
else if (t.getTagName().equals("TD"))
{
if(j>4){j=0;i++;}
matrice[i][j++]=t.toPlainTextString();
System.out.print(t.toPlainTextString() + "|");
td++;
}
}

if (n.getChildren() != null)
for (int i = 0; i < n.getChildren().size(); i++)
displayTree(n.getChildren().elementAt(i));


}

static void affiche()
{
try
{
//On utilise ici un affichage classique avec getPrettyFormat()
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
sortie.output(document, System.out);
}
catch (java.io.IOException e){}
}

static void enregistre(String fichier)
{
try
{
//On utilise ici un affichage classique avec getPrettyFormat()
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
//Remarquez qu'il suffit simplement de créer une instance de FileOutputStream
//avec en argument le nom du fichier pour effectuer la sérialisation.
sortie.output(document, new FileOutputStream(fichier));
}
catch (java.io.IOException e){}
}
public static void main(String[] args)
{
try
{
Parser parser = new Parser ("file:C:\\fichier.html");
NodeList list = new NodeList ();
NodeFilter filter = new TagNameFilter ("TABLE");
for (NodeIterator e = parser.elements (); e.hasMoreNodes ();)
{
e.nextNode().collectInto(list, filter);
}
for (int i = 0; i < list.size(); i++)
{
//System.out.println("=============================");
Node table = list.elementAt(i);
displayTree(table);
}
int colonne=td/ligne;

for (int i = 0; i < ligne; i++)
{
for (int z = 0; z < colonne; z++){
System.out.print(" "+matrice[i][z]);
}
System.out.println();
}

for(int j=0;j<ligne-1;j++){
//Element racine = new Element("Racine");
Element etudiant = new Element("etudiant");
racine.addContent(etudiant);
for (int z = 0; z < colonne; z++){
Element nom = new Element(matrice[0][z]);
nom.setText(matrice[j+1][z]);
etudiant.addContent(nom);
}
}
affiche();
enregistre("out.xml");
}
catch(ParserException e)
{
e.printStackTrace();
}
}
}


et voici fichier.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head>





<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Document sans nom</title>

</head>

Voici la liste des etudiants de L3 informatique en 2008/09.



Num.,

NomPrenom,

Adresse_electronique,

Identifiant,

Annee,

----

1,

Nom1,

mmon1@adresse.com,

as803819,

2008,

----

2,

Nom2 prenom2_1 prenom2_2,

nom2@adresse.com,

as805431,

2008


</html>

et ça a bien marché.

Mais lorsque la page html contient plus qu'un tableau, les problemes commencent.

comment je dois faire pour regler ce probleme?

Merci

1 réponse

cs_asle Messages postés 8 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 13 septembre 2010
24 déc. 2009 à 08:01
par exemple avec le fichier html suivant, je ne peux pas recuperer chaque tableau dans une matrice poour que par la suite je le conertie en xml:

[b]<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Document sans nom</title>

</head>

Voici la liste des etudiants de L3 informatique en 2008/09.



Num.,

Nom Prenom,

Adresse electronique,

Identifiant,

Annee,

----

1,

Nom1,

mmon1@adresse.com,

as803819,

2008,

----

2,

Nom2 prenom2_1 prenom2_2,

nom2@adresse.com,

as805431,

2008








<hr> </hr>




Nom,

Prenom,

Sexe,

Age,

----

BENALI,

Abdelkader,

M,

15,

----

TAHAR,

Amina,

F,

15,

----

DINE,

Farid,

M,

16


</html> /b


Comment je dois proceder?

ça fait 15 jours que je travaille dessus, et j'ai pas encore trouvé la solution.


Merci
0
Rejoignez-nous