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

Signaler
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
-
cs_kakol
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008
-
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 ***

8 réponses

Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

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 ***
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

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 ***
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
9
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++
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

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 ***
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
6
si StringBuffer implémente CharSequence fé matcher((CharSequence) tonStringBuffer );
Messages postés
180
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
12 juin 2008

il me met : impossible de convertir (StringBuffer) en (CharSequence)

*** Kakol ***
Messages postés
2465
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
11
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
Messages postés
95
Date d'inscription
dimanche 30 avril 2006
Statut
Membre
Dernière intervention
21 juin 2010

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.