블로그 이미지
ssun++

카테고리

[전체] (73)
Android (7)
JavaScript (9)
CI (5)
Language (14)
ETC (38)
Total314,893
Today21
Yesterday23

참참참 간단한 예제.
블럭 코멘트 되어있는 부분은
DOM으로 바꾸어서 똑같은 동작을 하는 코드입니다.

public class HtmlCleanerTest {
    public static void main(String[] args){
        HtmlCleaner cleaner=new HtmlCleaner();
        CleanerProperties props=cleaner.getProperties();
        TagNode node=null;
        try {
            node=cleaner.clean(new File("test.html"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        // HtmlClenaer API로 clean결과 화면출력하기
        SimpleXmlSerializer se=new SimpleXmlSerializer(props);
        try {
            se.writeXmlToStream(node, System.out);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // DOM으로 바꾸어서 clean 화면출력하기
        /*
        DomSerializer dom=new DomSerializer(props);
        Document doc=null;
        try {
            doc=dom.createDOM(node);
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
  
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer=null;
        try {
            transformer=tFactory.newTransformer();
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        }

        transformer.setOutputProperty(OutputKeys.ENCODING, "euc-kr");
        transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "member.dtd");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");

        DOMSource source = new DOMSource(doc);

        StreamResult result =  new StreamResult(System.out);

        try {
            transformer.transform(source, result);
        } catch (TransformerException e) {
            e.printStackTrace();
        }
        */
    }
}

test.html 파일 (</td>와 </tr> 태그가 빠졌습니다.)
<html>
 <head></head>
 <body>
  <table>
   <tr>
    <td>칼럼1
    <td>칼럼2
   <tr>
    <td>가나
    <td>다라
  </table>  
 </body>
</html>

프린트 되는 결과
(xml 포맷으로 열고 닫는 태그가 맞춰져 있습니다.
인덴트나 줄바꿈 등에서 차이가 있을 수 있습니다.)
<?xml version="1.0" encoding="MS949"?>
<html><head /><body>
    <table><tbody><tr><td>칼럼1
    </td><td>칼럼2
   </td></tr><tr><td>가나
    </td><td>다라
  </td></tr></tbody></table> 
</body></html>

'장'님. 도움이 되었으면 좋겠네요.
Posted by ssun++

댓글을 달아 주세요

  1. 2009.05.12 09:09 신고  댓글주소  수정/삭제  댓글쓰기

    감사 합니다^^ 많은 도움이 됬네요

  2. 2010.05.01 22:23 신고 질문  댓글주소  수정/삭제  댓글쓰기

    위의 글에 대해 질문 있습니다. 이클립스에서 이게 작동이 되나요... 저는 하려고 하는데 자바프로젝트로 실행시키면 HtmlCleaner 객체생성에 있어서 부터 빨간줄이 ㄷㄷㄷ 어떻게 해야 할지 모르겠습니다.

    • 2010.05.05 15:52 신고 Favicon of http://x1210.tistory.com ssun++  댓글주소  수정/삭제

      라이브러리를 추가하지 않으신게 아닐까요?? http://htmlcleaner.sourceforge.net에서 라이브러리 다운 받으셔서 추가하시고 해보세요. 안되는 부분 있으시면 또 물어보시구요. 답이 좀 늦을수는 있습니다 ^^;

  3. 2010.11.03 20:16 신고 와후  댓글주소  수정/삭제  댓글쓰기

    돌아다니다가 들렸습니다.
    질문이 있는데요
    htmlcleaner 를 쓸때 꼭 html 파일로만 가능한가요? url 주소만 넣으면 xml파일로 만들어지게 하는 경우는 없냐요?

    • 2010.11.06 13:35 신고 Favicon of http://x1210.tistory.com ssun++  댓글주소  수정/삭제

      HtmlCleander.clean() 메소드는 File, InputStream, String, URL 등의 타입을 받을 수 있도록 오버로딩 하고 있습니다.
      위의 예제에서 파라미터만 아래처럼 바꾸면 되네요.
      node = cleaner.clean(new URL("원하는URL"));
      도움 되셨으면 좋겠습니다 ^^

  4. 2012.05.18 17:59 신고 이동욱  댓글주소  수정/삭제  댓글쓰기

    쇼핑몰 파싱을 위해 공부하던 중 들렸습니다.
    질문이 있습니다.
    현재 euc-kr의 형태인 사이트를 파싱하려는데
    위의 코드로 해보니 한글이 깨져 나옵니다.
    transformer.setOutputProperty(OutputKeys.ENCODING,"utf-8") <<< 이 메소드 호출이 utf-8로 인코딩하는 방법인가요?? 이 코드가 있어도 한글이 깨지는데 어찌하면 안깨지고 xml형태로 출력이 가능할까요 ㅠㅠ

최근에 달린 댓글

최근에 받은 트랙백

글 보관함