1.下载 Jar 包并导入工程,点击这里( jsoup-1.11.2.jar)
2.获取 docment 对象
1.通过类加载器,获取xml文件的真实路径
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
2.加载文档(需指定编码)进内存,获取 document 对象
Document document = Jsoup.parse(new File(path), "utf-8");
3.获取元素的值,并进行操作
(获取 name 属性的 elements 对象,这个元素是一个集合,取第一个对象的值)
Elements elements = document.getElementsByTag("name");
Element element = elements.get(0);
String name = element.text();
System.out.println(name);
常用 5 个对象的介绍
1.Jsoup 对象:工具类
具体方法:parse:解析html或xml文档,返回Document
- parse(File in, String charsetName):解析xml或html文件的。
- parse(String html):解析xml或html字符串
- parse(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
2.Document:文档对象。代表内存中的dom树
具体方法:获取Element对象
- getElementById(String id):根据id属性值获取唯一的element对象
- getElementsByTag(String tagName):根据标签名称获取元素对象集合
- getElementsByAttribute(String key):根据属性名称获取元素对象集合
- getElementsByAttributeValue(String key, String value):根据对应的属性名和属性值获取元素对象集合
3.Elements:元素Element对象的集合,可以当做 ArrayList来使用
4.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():获取标签体的所有内容(包括字标签的字符串内容)
5.Node:节点对象,是Document和Element的父类
快捷查询方式
1.selector选择器
使用语法:参考Selector类中定义的语法
Elements element = document.select(String cssQuery)
2.XPath:w3c提供的快速查询方法
1.下载 jar 包点击这里(JsoupXpath-0.3.2.jar),并导入项目
2.获取 xml 的路径
String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
3.获取 document 对象
Document document = Jsoup.parse(new File(path), "utf-8");
4.根据 document 对象获取 JXDocument 对象
JXDocument jxDocument = new JXDocument(document);
5.结合 Xpath 语法进行查询
(语法很多,搜索”XPath语法”),这里演示几种
//1.查询所有student标签
List<JXNode> jxNodes = jxDocument.selN("//student");
//2查询所有student标签下的name标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
//3查询student标签下带有id属性的name标签
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
//4查询student标签下带有id属性的name标签 并且id属性值为52dixiaowo
List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='52dixiaowo']");