Java 라이브러리 중에 JSOUP 라고 심플하면서도 왠지 간지나는 HTML 문서를 다루는 라이브러리가 있다.
요 라이브러리를 이용해 HTML 문서에서 각종 경로를 추출해서 요 경로를 절대 경로로 바꿔보자.
먼저 테스트할 html 문서
<html>
<head>
<title>테스트다!!</title>
<script type="text/javascript" src="/resource/js/jquery-1.7.1.min.js"></script>
<link type="text/css" href="/resource/css/admin/general.css" rel="stylesheet" />
</head>
<body>
<span id="navi">
<img src="http://www.naver.com/resource/image/stitle_standarda.gif" alt="" />
</span>
테스트다!!
</body>
</html>
테스트소스
import java.io.IOException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Test {
public static void main(final String[] args) throws IOException{
Document doc = Jsoup.parse(
new URL("http://127.0.0.1:8080/index.html").openConnection().getInputStream(),
"UTF-8",
"http://127.0.0.1:8080/");
// src attribute 가 있는 엘리먼트들을 선택
Elements elems = doc.select("[src]");
for( Element elem : elems ){
if( !elem.attr("src").equals(elem.attr("abs:src")) ){
elem.attr("src", elem.attr("abs:src"));
}
}
// href attribute 가 있는 엘리먼트들을 선택
elems = doc.select("[href]");
for( Element elem : elems ){
if( !elem.attr("href").equals(elem.attr("abs:href")) ){
elem.attr("href", elem.attr("abs:href"));
}
}
System.out.println(doc.toString());
}
}
변환된 html 문서
<html>
<head>
<title>테스트다!!</title>
<script type="text/javascript" src="http://127.0.0.1:8080/resource/js/jquery-1.7.1.min.js"></script>
<link type="text/css" href="http://127.0.0.1:8080/resource/css/admin/general.css" rel="stylesheet" />
</head>
<body>
<span id="navi"> <img src="http://www.naver.com/resource/image/stitle_standarda.gif" alt="" /></span>
테스트다!!
</body>
</html>
JSOUP 사이트 : http://jsoup.org/
Maven Dependency
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.6.3</version>
</dependency>