2009-03-23 7 views

ответ

1

Это код, который я использовал для достижения именно то, что вы» d хотел бы сделать, но сначала позвольте мне дать вам несколько советов.

Если вы находитесь в среде Java Swing, обязательно используйте методы в пакетах javax.swing.text.html и javax.swing.text.html.parser. К сожалению, они в основном предназначены для использования на JEditorPane, но я все же настоятельно рекомендую вам взглянуть на них.

В Java 6 API называется класс HTML.Tag, который идентифицирует начальные и конечные теги HTML, которые затем можно использовать для определения того, где ссылки должны следовать вашей программе. http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Tag.html

Когда я написал программу, очень похожее на это, я использовал 3 основных метода:

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) 

Если вам нужна дополнительная помощь в том, чтобы написать эти методы, вы можете сообщение меня, но в принципе, вы ищет исходный тег и конечный тег, а затем из него вы идентифицируете URL-адрес, а затем можете перейти к следующему шагу, который следует за URL-адресом.

Чтобы следовать указателю, я советую вам использовать объект JEditorPane. Javax.swing.event.Интерфейс HyperlinkListener определяет только один метод hyperlinkUpdate (HyperlinkEvent e), который вы можете передать URL-адрес, а затем вызвать .setPage (evt.getURL()) на свой объект JEditorPane. Затем будет обновлена ​​панель с новой страницей и вы сможете снова запустить процесс.

Msg me если у вас есть какие-либо вопросы и, пожалуйста, проголосовать за этот ответ!

2

Вы хотите сделать это как одноразовую задачу редактирования или вам нужна систематическая реализация (например, код)? Во втором случае найдите реализацию парсера Java HTML и пройдите дерево DOM.

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

+0

Мне нужно сделать это, используя код Java. –

+0

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

0

Если файл является XHTML документ, это стандартный XML-документ и луб способ разобрать его с помощью jdom. JDom очень мощный и простой в использовании и понимании.

Если у вас есть html-документ, вы можете попробовать htmlparser, в частности класс LinkTag.

0

Вы можете использовать Rhino, а затем загрузить файл HTML. Как только он загружается, вы можете использовать getElementBy, чтобы перейти на любой узел или получить значение.

0

Я бы посмотрел tagsoup, который построит дерево DOM из любого документа HTML, даже самых несоответствующих.

Затем с помощью XPath и перебрать NodeList возвращенного:

//

и

// IMG

0

Я успешно использовал Neko HTML Parser для такого рода вещей (скребок экрана).

 
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