import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTML;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.HttpURLConnection;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.parser.ParserDelegator;
public class HTMLParsing {
private static FileWriter writer;
//파서는 콜백 형식으로 되어 있다. 각 태그가 들어 올때 적절한 메소드가 호출됨
private class CallbackHandler extends HTMLEditorKit.ParserCallback {
//태그가 시작할 때 호출 되는 메소드
public void handleStartTag(HTML.Tag tag, MutableAttributeSet a, int pos) {
//<A href 인 경우... A태그를 찾는다...
if (tag == HTML.Tag.A) {
System.out.println(a.getAttribute(javax.swing.text.html.HTML.Attribute.HREF));
}
}
//텍스트가 들어올때 호출되는 메소드
public void handleText(char[] data, int pos) {
System.out.println(data);
try {
//텍스트만 파일에 저장합니다.
writer.write(data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void parse(String str) {
String content = null;
try {
//입력받은 URL에 연결하여 InputStream을 통해 읽은 후 파싱 한다.
// URL url = new URL(str);
//
// HttpURLConnection con = (HttpURLConnection)url.openConnection();
//
// InputStreamReader reader = new InputStreamReader(con.getInputStream(),"euc-kr");
InputStreamReader reader = new InputStreamReader(new FileInputStream(new File(str)),"euc-kr");
new ParserDelegator().parse(reader, new CallbackHandler(), true);
//
// con.disconnect();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
//저장파일 만들고
writer = new FileWriter("c:/temp/output.txt");
HTMLParsing parser = new HTMLParsing();
parser.parse("c:/temp/aa.txt");
//파일닫는다.
writer.close();
}
'IT_Programming > Java' 카테고리의 다른 글
JPopupMenu Example (0) | 2008.08.20 |
---|---|
image view (이미지 여러 방향으로 뒤집기) (0) | 2008.08.20 |
다중파일 전송 (0) | 2008.08.20 |
자바 그림 불러오기 (0) | 2008.08.20 |
DefaultTreeCellRenderer test (0) | 2008.08.20 |