Jsoup:工具类,可以解析html或xml文档,返回Document
一、parse 对象
parse:解析html或xml文档,返回Document
* parse:解析html或xml文档,返回Document
* parse(File in, String charsetName):解析xml或html文件的。
* parse(String html):解析xml或html字符串
* parse(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
parse(File in, String charsetName
):解析xml或html文件的。
public class JsoupDemo {
public static void main(String[] args) throws Exception{
//获取student.xml的path
String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();
//解析xml文档,加载文档进内存,获取dom树--->Document
Document document = Jsoup.parse(new File(path),"utf-8");
System.out.println(document);
}
}
结果打印出 xml 文档内容
2. parse(String html)
:解析xml或html字符串
public class JsoupDemo {
public static void main(String[] args) throws Exception{
String html = "<?xml version='1.0' encoding=\"UTF-8\"?>\n" +
"<students>\n" +
" <student id='1'>\n" +
" <name>zhangsan</name>\n" +
" <age>23</age>\n" +
" <gender>male</gender>\n" +
" <br/>\n" +
" </student>\n" +
"</students>" +
"";
Document document = Jsoup.parse(html);
System.out.println(document);
}
}
parse(URL url, int timeoutMillis)
:通过网络路径获取指定的html或xml的文档对象
package jsoup;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import javax.print.DocFlavor;
import java.net.URL;
public class JsoupDemo {
public static void main(String[] args) throws Exception{
//代表网络中的一个链接
URL url = new URL("https://blog.csdn.net/nanhuaibeian/article/details/104679459");
Document document = Jsoup.parse(url,10000)
System.out.println(document);
}
}
二、Document 对象
Document:文档对象,代表内存中的dom树
* 获取Element对象:
* getElementById(String id):根据id属性值获取唯一的element对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
student.xml
内容
<?xml version='1.0' encoding="UTF-8"?>
<students>
<student id='1'>
<name>zhangsan</name>
<age>23</age>
<gender>male</gender>
<br/>
</student>
<student id='2'>
<name>lisi</name>
<age>24</age>
<gender>female</gender>
<br/>
</student>
</students>
public class JsoupDemo {
public static void main(String[] args) throws Exception{
String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();
//解析xml文档,加载文档进内存,获取dom树--->Document
Document document = Jsoup.parse(new File(path),"utf-8");
Elements elements1 = document.getElementsByTag("name");
Elements elements2 = document.getElementsByAttribute("id");
Elements elements3 = document.getElementsByAttributeValue("id","1");
//getElementById 直接返回的是 element 对象,不再是 elements
Element element = document.getElementById("1");
System.out.println(element);
}
}
Elements:元素Element对象的集合。可以当做 ArrayList<Element>
来使用
三、Element 元素对象
(1)获取子元素对象
* getElementById(String id):根据id属性值获取唯一的element对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
(2)获取属性值
* String attr(String key):根据属性名称获取属性值
(3)获取文本内容
* String text():获取文本内容
* String html():获取标签体的所有内容(包括字标签的字符串内容)
public class JsoupDemo {
public static void main(String[] args) throws Exception{
String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();
//解析xml文档,加载文档进内存,获取dom树--->Document
Document document = Jsoup.parse(new File(path),"utf-8");
// 通过 Element 对象获取子标签对象
Element element_student = document.getElementsByTag("student").get(0);
Elements ele_name = element_student.getElementsByTag("name");
// 获取 student 对象的属性值
String number = element_student.attr("id");
// 获取文本内容
String text = ele_name.text();//获取文本内容
String html = ele_name.html();//获取标签体的所有内容(包括字标签的字符串内容)
}
}
四、 Node 节点对象
是 Document 和 Element 的父类