当前位置: java基础教程 > 24-xml > 阅读正文

jsoup — java 解析 xml( html )

2021.1.7.   539 次   2062字

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']");

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群