Java 之jsoup 三种解析

      Jsoup.parse (  )                 Dom选择器        css选择器         xpath选择器

 1.操作xml文档
     1. 解析(读取):将文档中的数据读取到内存中       2. 写入:将内存中的数据保存到xml文档中。持久化的存储

 2..解析xml的方式:
            1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
                1.优点:操作方便,可以对文档进行CRUD的所有操           2 .缺点:占内存
            2. SAX:逐行读取,基于事件驱动的。
                1. 优点:不占内存。             2. 缺点:只能读取,不能增删改

3.xml常见的解析器:
         1. JAXP:sun公司提供的解析器,支持dom和sax两种思想            2. DOM4J:一款非常优秀的解析器
         3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的                       API, 通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。还可以支持   xpath
         4. PULL:Android操作系统内置的解析器,sax方式的。

Jsoup.parse (  )

   1.可传入一个 文件地址         2.可传入一个 字符串 就是 .xml .html 文件的内容          3.可传入 一个url 就是网上的.html

String path = JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath();
Document document = Jsoup.parse(new File(path), "utf-8");
str="<name id="wyc"> <xing>张</xing> <ming>三</ming> </name>"
Document document = Jsoup.parse(str);
URL url = new URL("https://baike.baidu.com/item/jsoup/9012509?fr=aladdin");代表网络中的一个资源路径
Document document = Jsoup.parse(url, 10000);  超时时间

Dom选择器

String path = "D:\\java\\Java源码\\JDBCPool\\src\\student1.xml";
Document document = Jsoup.parse(new File(path),"utf-8");    传入文件路径和编码

Elements students = document.getElementsByTag("student").get(0);   student标签的第一个
Elements id = document.getElementsByAttribute("id");   选择属性有id的
Eements number = document.getElementsByAttributeValue("number", "heima_0001");
选择number属性等于heima_0001的
Element wyc = document.getElementById("wyc");   选择id 为wyc的

       getElementById​(String id):根据id属性值获取唯一的element对象
       getElementsByTag​(String tagName):根据标签名称获取元素对象集合
       getElementsByAttribute​(String key):根据属性名称获取元素对象集合
       getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合 

1.获取属性值
   * String attr(String key):根据属性名称获取属性值
2. 获取文本内容
   * String text():获取所有字标签的纯文本内容
   * String html():获取标签体的所有内容(包括子标签的标签和文本内容)

css选择器

String path = "D:\\java\\Java源码\\JDBCPool\\src\\student1.xml";
Document document = Jsoup.parse(new File(path), "utf-8");

Element name = document.select("name").get(0);   获取标签的为name 的第一个
Elements select = document.select("#wyc");            获取id为wyc的
Elements select1 = document.select("student[number='wahaha']");   获取标签为Student且number属性为wahaha的
Elements select2 = document.select("student[number='wahaha'] > age");  获取上面的一个age子标签
Elements select2 = document.select("student[number='wahaha'] age");  获取上面的所有age子标签

xpath选择器

String path = "D:\\java\\Java源码\\JDBCPool\\src\\student1.xml";
Document document = Jsoup.parse(new File(path), "utf-8");
JXDocument jxDocument = new JXDocument(document);  将dom对象封装为 jx对象

List<JXNode> jxNodes = jxDocument.selN("//student[1]");   标签为student的第一个
List<JXNode> jxNodes1 = jxDocument.selN("//student/name[@name='abc']/text"); jack
标签为student下的name标签的属性为abc 的文本

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值