2009-03-23 6 views

Répondre

1

Ceci est le code que j'utilisé pour accomplir exactement ce que vous J'aimerais faire, mais laissez-moi d'abord vous donner quelques conseils.

Si vous êtes dans un environnement Java Swing, veillez à utiliser les méthodes des packages javax.swing.text.html et javax.swing.text.html.parser. Malheureusement, ils sont principalement destinés à être utilisés sur un JEditorPane, mais je vous recommande fortement d'y jeter un coup d'œil.

Il existe une classe dans l'API Java 6 appelée HTML.Tag qui identifie les balises de début et de fin HTML, que vous pouvez ensuite utiliser pour déterminer les liens que vous souhaitez que votre programme suive. http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Tag.html

Quand j'ai écrit un programme très similaire à cela, j'ai utilisé 3 méthodes principales:

public void handleStartTag(HTML.Tag t, MUtableAttributeSet atts, int pos) 
public void handleEndTag(HTML.Tag t, int pos) 
public void handleText(char[] text, int pos) 

Si vous avez besoin de plus d'aide sur la façon d'écrire ces méthodes, vous pouvez me message, mais au fond, vous êtes Vous recherchez une balise initiale et une balise de fin, puis à partir de ce que vous aurez identifié l'URL, puis vous pouvez passer à l'étape suivante, qui suit l'URL.

Pour suivre l'URL, je vous conseille d'utiliser l'objet JEditorPane. Le javax.swing.event.L'interface HyperlinkListener ne définit qu'une seule méthode, hyperlinkUpdate (HyperlinkEvent e), dans laquelle vous pouvez passer l'URL, puis appeler .setPage (evt.getURL()) sur votre objet JEditorPane. Cela mettra à jour le volet avec la nouvelle page et vous permettra de redémarrer le processus.

Envoyez-moi un message si vous avez des questions et votez pour cette réponse!

2

Voulez-vous effectuer cette opération en tant que tâche d'édition ponctuelle ou avez-vous besoin d'une implémentation systématique (c'est-à-dire d'un code)? Dans le second cas, recherchez une implémentation de l'analyseur HTML HTML et parcourez l'arborescence DOM.

http://java-source.net/open-source/html-parsers

+0

Je dois le faire en utilisant du code Java. –

+0

http://www.benmccann.com/dev-blog/java-html-parsing-library-comparison/ – trunkc

0

Si votre fichier est un document xhtml, il est un document XML standard et la façon dont libériennes pour l'analyser utilise jdom. JDom est très puissant et facile à utiliser et à comprendre.

Si vous avez un document html, vous pouvez essayer htmlparser, en particulier la classe LinkTag.

0

Vous pouvez utiliser Rhino, puis chargez le fichier html. Une fois chargé, vous pouvez utiliser getElementBy pour aller à n'importe quel noeud ou pour obtenir de la valeur.

0

Je voudrais jeter un oeil à tagsoup, qui va construire un arbre DOM à partir de n'importe quel document HTML, même les plus non-conformes.

Ensuite, utilisez XPath et itérer sur le NodeList retourné par:

// une

et

// img

0

J'ai utilisé le Neko HTML Parser avec succès pour ce genre de chose (grattage d'écran).

 
import org.cyberneko.html.parsers.DOMParser; 
import org.w3c.dom.Node; 

public class TestParser { 

    public static void main(String[] argv) throws Exception { 
      DOMParser parser = new DOMParser(); 
      for (int i = 0; i
Questions connexes