Extraire titre d'un doc html [Résolu]

Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
- - Dernière réponse : cs_kakol
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
- 22 juin 2006 à 09:25
Bonjour,

J'essaie d'adapter la classe HTMLutils du projet Diaporama de steorogath. En effet, je souhaite extraire le titre de mes documents html, ce que fait cette classe. Cependant j'utilise la version 1.4 de java et je crois que la classe HTMLutils est développée avec la version 1.5 car certains objets comme StringBuilder ne sont pas reconnus. J'ai regardé la javadoc et essayé de remplacer StringBuilder par StringBuffer mais j'ai des problèmes avec Matcher. Je suis encore novice en java et je n'arrive pas à me servir de cette classe alors qu'elle me serait bien utile.

Voici le code de la classe :

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.net.MalformedURLException;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public
class HTMLutils {

public HTMLutils(){
}

public
static String getHtmlTitleMarkup(String htmlFile){

try {
BufferedReader in =
new BufferedReader(
new FileReader(
new File(htmlFile)));
StringBuilder input =
new StringBuilder();

int ch;

while ((ch = in.read()) != -1) input.append((
char ) ch);
String patternString =
"<title>+[^"]+</title>";
Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(input);

while (matcher.find())
{

int start = matcher.start();

int end = matcher.end();
String match = input.substring(start, end);
toreturn = match;
}
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}

return toreturn.substring(7,toreturn.length()-8).trim();
}

public
static String toreturn;
}

Quelqu'un pourrait m'aider svp? Merci d'avance.

*** Kakol ***
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
3
Merci
Salut,
ça y est j'ai résolu mon problème !!!
En fait ça n'était pas une question de jdk. j'ai aussi changé la ligne du StringBuilder en StringBuffer input = new StringBuffer();
Le problème venait en fait d'un conflit entre blibliothèques. En effet, le package java.lang était présent dans 2 bibliothèques, dans une des 2 StringBuffer implémentait bien CharSequence et dans l'autre non, et bien sur la compilation utilisait la mauvaise bibliothèque.
Merci pour votre aide et bonne continuation

*** Kakol ***

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_kakol
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
3
Merci
Voici mon code final :

public
class HtmlUtils {

public HtmlUtils() {
}

public
static String getHtmlTitleMarkup(String htmlFile) {

try {
BufferedReader in =
new BufferedReader(
new FileReader(
new File(htmlFile)));
StringBuffer input =
new StringBuffer();

int ch;

while ((ch = in.read()) != -1)
input.append((
char ) ch);
String patternString =
"<title>+[^"]+</title>";
Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher((CharSequence) input);

while (matcher.find()) {

int start = matcher.start();

int end = matcher.end();
String match = input.substring(start, end);
toreturn = match;
}
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}

return toreturn.substring(7, toreturn.length() - 8).trim();
}

}
***  Kakol ***

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 119 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_kakol
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
7
0
Merci
Salut
Moi je te dirais que tout le monde (surtout dans les nouvelles technologies) doit se tenir à jour : donc télécharge Java5 et comme ça plus aucun problème.
Sinon pour le problème, remplacer StringBuilder par StringBuffer revient au même parce qu'ils implémentent tous les deux de CharSequence.

Voila
A++
Commenter la réponse de scaryman
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
0
Merci
Je ne serais pas contre passer a la version 1.5 mais comme je suis en stage je doit utiliser la version présente dans l'entreprise donc j'ai pas le choix.
En fait voici mon erreur :
La méthode matcher(CharSequence) du type Pattern ne s'applique pas aux arguments (StringBuffer)


Je comprend l'erreur puisque mon input est du type StringBuffer et que la méthode matcher demande un type CharSequence. Le problème c'est que je ne sais pas quoi faire puisque StringBuffer implémente CharSequence.

*** Kakol ***
Commenter la réponse de cs_kakol
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
6
0
Merci
si StringBuffer implémente CharSequence fé matcher((CharSequence) tonStringBuffer );
Commenter la réponse de super_toinou
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
0
Merci
il me met : impossible de convertir (StringBuffer) en (CharSequence)

*** Kakol ***
Commenter la réponse de cs_kakol
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
10
0
Merci
bizarre moichez moi je suis en 1.5 j'ai change juste cette ligne : StringBuffer input = new StringBuffer();
ca compile encore

bonne chance
je t'aiderais bien plus mai sje ne me sens aps de changer de jdk
Commenter la réponse de sheorogath
Messages postés
95
Date d'inscription
dimanche 30 avril 2006
Statut
Membre
Dernière intervention
21 juin 2010
0
Merci
bonjour à tous, j'ai un probleme kakol, je veux éxtraire le nom des liens dans un code html, c'est présque la même chose que vos, est ce que je peux avoir ton code pour régler mon probléme, sa va beaucoup m'aider, merci.


 
Commenter la réponse de cs_papillon2000