注意:在Eclipse里使用Jsoup解析文档时要在项目中导入Jsoup的jar包!
Jsoup是Java的一个解析和遍历HTML的API,可以把一个HTML字符串解析成一个Document文档,并且会尽可能的得到一个标准的解析结果,会自动补充缺失的结束标记。
例如:"<p>Jsoup<p>Jsoup"会解析为"<p>Jsoup</p><p>Jsoup</p>",官方文档说会创建隐式标签,即"<td>Jsoup</td>"会解析为<table><tr><td>Jsoup</td></tr></table>",但是经验证并不会创建,而是会忽略td标签,解析为"Jsoup",会自动创建完整的HTML页面结构,即自动创建<html><head><body>标签,最终解析的结果为<html><head></head><body>Jsoup</body></html>
例如:
package com.daxiang.myjsoup;
import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class JsoupTest1 {
public static void main(String args[]) throws IOException{
String html1="<p>Jsoup<p>LKZERO";
Document doc=Jsoup.parse(html1);
System.out.println(doc.toString());
System.out.println("--------");
String html2="<td>LKZERO</td><br>" + "<tr><td>LKZERO<td></tr><br/>" + "<table><tr><td>JSOUP</td></tr></table>";
Document doc2=Jsoup.parse(html2);
System.out.println(doc2.toString());
}
}
得到结果:
<html>
<head></head>
<body>
<p>Jsoup</p>
<p>LKZERO</p>
</body>
</html>
--------
<html>
<head></head>
<body>
LKZERO
<br>LKZERO
<br>
<table>
<tbody>
<tr>
<td>JSOUP</td>
</tr>
</tbody>
</table>
</body>
</html>
Jsoup解析得到的Document文档是由Document,Element,Node和TextNode组成的,其中Document继承Element,Element继承Node,TextNode继承Node。
parse()静态方法:Jsoup解析HTML字符串使用parse静态方法,无论HTML字符串是什么内容,都会得到一个Document文档,至少会包含<html><head><body>三个元素。
parseBodyFragment()静态方法:经我测试与parse()得到的结果相同,二者区别有待进一步验证