IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Exception problème


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    storm_2000
    Invité(e)
    Par défaut Exception problème
    Bonjour j'aimerais analyser les liens sur un site web.
    Pour celà j'ai voulus faire un parser XML mais il ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    import java.net.URL;
     
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.xml.sax.Attributes;
    import org.xml.sax.helpers.DefaultHandler;
     
    public class Main {
     
    	public static void main(String args[]) {
     
    		DefaultHandler handler = new DefaultHandler() {
    			public void startElement(String namespace, String lname,
    					String qname, Attributes att) {
    				System.out.println(lname);
    				if (lname.equalsIgnoreCase("a")) {
    					for (int i = 0; i < att.getLength(); i++) {
    						if (att.getLocalName(i).equals("href")) {
    							System.out.println(att.getValue(i));
    						}
    					}
    				}
    			}
    		};
     
    		try {
    			SAXParserFactory factory = SAXParserFactory.newInstance();
    			factory.setNamespaceAware(true);
    			SAXParser saxParser = factory.newSAXParser();
    			saxParser.parse(new URL("http://www.developpez.net").openStream(),
    					handler);
    		} catch (Exception e) {
    			System.out.println(e);
    		}
    	}
    }
    J'ai des exception : Invalid byte 2 of 3-byte UTF-8 sequence.

    Pouvez vous m'aider ? merci
    Dernière modification par Robin56 ; 04/06/2012 à 23h53. Motif: Ajout du préfixe

  2. #2
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Bonjour,
    Le problème viens du fait que le document que tu essaye de parser n'est pas valide. Il n'indique pas d'encoding, donc il devrait être en UTF-8 (encodage par défaut), ce qui n'est pas le cas car il contient de l'ISO-8859-1.
    Si tu voudrais résoudre ce problème d'encoding, tu pourrais faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    URL url = new URL("http://www.developpez.net");
    InputSource source = new InputSource(new InputStreamReader(url.openStream(), "ISO-8859-1"));
    saxParser.parse(source,handler);
    Ceci dit, ça ne résoudrait pas l'intégralité du problème : il reste d'autres problèmes de validation. En conclusion HTML != XML. Si tu veux parser un flux HTML avec des outils XML il y a quelques étapes supplémentaires de vérifications, corrections, etc.

    Bonne chance
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  3. #3
    storm_2000
    Invité(e)
    Par défaut
    comment faire donc pour récupérer les liens dans une page HTML

    sinon merci, ta 1er solution résoud 1 problème

  4. #4
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Salut,
    comment faire donc pour récupérer les liens dans une page HTML
    Trois possibilités.
    1 - Tu continues d'utiliser les outils spécifiques à XML, mais tu "valides" ce que tu parse, cad : si XHTML valide alors parsing, sinon corrections (encoding, validation XML, ...) puis parsing. Regarde des outils comme JTidy, NekoHTML ou TagSoup pour faire de la correction.
    2 - Tu utilises des outils "spécifiques" à HTML (par exemple les parsers HTML de Swing).
    3 - Tu peux passer par des RegExp
    Fais une recherche sur le forum, le sujet à déjà dû être traité quelques fois
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  5. #5
    storm_2000
    Invité(e)
    Par défaut
    merci, je regarde vers les regex mais je ne trouve pas.
    Je créer cette regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		Pattern pattern = Pattern.compile("img.*src=\"(.*)\".*");
    pour trouver les images.

    mais le problème :
    il comment bien à src=", mais ne s'arrête pas au " suivant. comment faire pour pouvoir lui dire de s'arrêter a la 1er occurence ?

    merci

Discussions similaires

  1. Java heap space Exception, problème de mémoire
    Par Bobble dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 08/11/2010, 18h04
  2. Réponses: 2
    Dernier message: 03/09/2007, 17h06
  3. Exception, problème pour la faire remonter.
    Par Djobird dans le forum Langage
    Réponses: 12
    Dernier message: 18/05/2007, 10h35
  4. Problème d'utilisation exception 13
    Par chr$stophe dans le forum Assembleur
    Réponses: 2
    Dernier message: 29/11/2005, 17h58
  5. [SimpleDateFormat] problème d'exception
    Par julienOriano dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 12/07/2004, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo