微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 之jsoup 三种解析

 Java 之jsoup 三种解析

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://xxxx.com");代表网络中的一个资源路径
Document document = Jsoup.parse(url, 10000);  超时时间
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子标签

 示例

public List<Order> getorderList(String pageHtml) {
		System.out.println(pageHtml);
		Document doc = Jsoup.parse(pageHtml); //调用
	 	Elements trs = doc.select("table").get(1).select("tbody").get(0).select("tr");
	 	List<Order> result = new ArrayList<Order>();
	 	for (int i = 0; i < trs.size(); i++) {
	 		Elements td = trs.get(i).select("td");
	 		System.out.println(td);
	 		if(td != null) {
	 			Order row = new Order();
				row.setordernum( td.get(0).text());
				row.setorderdate(td.get(4).text());				 
				row.setId(td.get(0).text());
				row.setAddtime((int)(new Date().getTime()/1000));
				result.add(row);
	 		}
	 		
		}
	 	
		return result;
	}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。