Estou precisando retirar as tags de um arquivo HTML (o que já existe um tópico aqui no fórum), mas além disso preciso extrair as informações referentes aos links (URL e texto referente ao link). Alguém saberia como poderia fazer isso usando a javax.swing.text.html?
Vlw mas eu tinha visto esse post anteriormente.
Como eu disse eu também precisava pegar o texto referente ao link (não somente o href="…"). Estou usando o HTML Parser da própria SUN e quando eu pego todo o texto do HTML não consigo fazer o controle de saber onde está localizada a TAG …<\A> para poder especificar que ali foi encontrado um link e mostrá-lo.
Obrigado mesmo assim Roger
R
Roger1
Bom, não sei se este é o melhor jeito (você não pode usar expressão regular ?),
aqui (http://www.javafaq.nu/java-example-code-656.html) tem um exemplo de HTML Parser Listener,
no seu caso você teria que adaptá-lo a um tipo de HTML “Link” ParserListener …
Estou sem jdk aqui no momento para ajudá-lo com código.
flw !
Roger Leite
B
brunosarri
Ae esse último post ajudou bastante…
Faltava ler como funcionava a API e eu percebi que ela possui chamadas em CallBack, dessa forma toda vez que o parser encontra alguma tag eu posso usar o método handleStartTag() para extrair informações referente àquela tag específica. Vou postar o código que eu fiz aqui como exemplo:
importjavax.swing.text.*;importjavax.swing.text.html.*;importjavax.swing.text.html.parser.*;importjava.io.*;importjava.net.*;importjava.util.*;publicclassMeuParserextendsHTMLEditorKit.ParserCallback{privateWriterout;privateintlevel=0;privatestaticStringBufferbuf=newStringBuffer();staticStringtextofinal="";publicvoidhandleText(char[]text,intposition){//System.out.println(new String(text).trim());textofinal=textofinal+newString(text).trim()+" ";}publicvoidhandleStartTag(HTML.Tagt,MutableAttributeSeta,intpos){//System.out.println("start: " + t);if(t==HTML.Tag.A&&a!=null){StringhrefValue=(String)a.getAttribute(HTML.Attribute.HREF);//System.out.println("<Endereço do link: " + hrefValue+">");textofinal=textofinal+"<Endereço do link: "+hrefValue+">"+" ";}}publicvoidhandleSimpleTag(HTML.Tagt,MutableAttributeSeta,intpos){if(t==HTML.Tag.IMG&&a!=null){StringsrcValue=(String)a.getAttribute(HTML.Attribute.ALT);//System.out.println("<Nome da imagem: " + srcValue+">");textofinal=textofinal+"<Nome da imagem: "+srcValue+">"+" ";}}publicstaticvoidmain(String[]args){ParserGetterkit=newParserGetter();HTMLEditorKit.Parserparser=kit.getParser();try{URLu=newURL("file:///F:/Projeto1.html");InputStreamin=u.openStream();InputStreamReaderr=newInputStreamReader(in);HTMLEditorKit.ParserCallbackcallback=newMeuParser();parser.parse(r,callback,true);System.out.println(textofinal);}catch(Exceptione){System.err.println(e);}//outra maneira de ler o arquivo/*try { Reader r = new FileReader("c:/Projeto1.html"); ParserDelegator parser = new ParserDelegator(); HTMLEditorKit.ParserCallback callback = new MeuParser(); parser.parse(r, callback, true); System.out.println(textofinal); } catch (IOException e) { e.printStackTrace(); } */}}
R
Roger1
Fantástico !
Agora só falta um “resolvido” no assunto.