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 举报,一经查实,本站将立刻删除。