一 解析:
解析:将文档中的数据加载到内存
1.1 两种解析思想:
1 DOM思想:(和JS的DOM一样,将标记语言一次性加载到内存,形成一颗dom树)
优点:操作方便,可以对XMl文件进行增删改查
缺点:一次性价值,占内存
(适应于PC端,内存较大)
2 SAX思想: 逐行读取,基于事件驱动
优点:几乎不占内存
缺点:只能读,不能增删改
(适应于手机端)
2.2 常见的XML的解析器:
解析器??? 更具XML解析思想写出来的解析jar包
1 JAXP解析器: sum公司提供的,支持DOM和SAX两种思想
(相当于JAVA官方提供的,性能较差,没人使用)
2 DOM4J解析器:DOM思想实现的一款非常优秀的解析器
3 Jsoup***解析器:DOM思想实现的一款非常优秀的解析器
4 PULL解析器: Android 系统内置的解析器
2.3 Jsoup解析器:(可以解析HTML也可以解析XML)
先导入jsuop包
(1) 快速入门:
1 导入jsoup的jar包
2 获取document对象
3 获取对应的元素标签element对象
4 获取数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ls9W1IkD-1602247559846)(C:\Users\29549\AppData\Roaming\Typora\typora-user-images\image-20201009202336162.png)]](https://img-blog.csdnimg.cn/20201009204716758.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA1MTA0OA==,size_16,color_FFFFFF,t_70#pic_center)
(2)常见的类及其使用方法
Jsoup类: 工具类,解析HTML或者XML文档,返回Document对象
Parse静态方法,获取Document对象,解析传过来的XML或者HTML文档.
1 parse(File,String) 传入文件以及编码方式
2 parse(String) 解析XML或者HTML字符串
3 parse(URL,int) 解析该网站的HTML/XML,并设置超时时间(毫秒),超时不在访问
(会把整个网页的代码全部爬下来)
Document类: 文档的对象,DOM树结构的根节点
获取Element、Elements对象
1 getElementById(String) 通过id获取唯一的一个标签对象
2 getElementsByTag(String 标签名) 根据标签名获取对象
3 getElementsByAttribute(String 属性名) 根据属性名获取对象
4 getElementsByAttributeValue(String 属性名,String 属性值) 根据属性名和属性值获取对象
Elements类: Element类的集合(相当于ArrayList)
Element类: 标签元素对象
获取子元素对象
1 getElementBy***\*Id\****(String) 通过id获取唯一的一个标签对象
2 getElement***\*s\****By***\*Tag\****(String 标签名) 根据标签名获取对象
3 getElement***\*s\****By***\*Attribute\****(String 属性名) 根据属性名获取对象
4 getElement***\*s\****By***\*AttributeValue\****(String 属性名,String 属性值) 根据属性名和属性值获取对象
获取属性值:
attr(String 属性名) 根据属性名得到属性值
获取文本内容:
text() 获取文本内容
html() 获取标签体内所有的内容
Node类: 节点对象
是Element和Document类的父类
快捷查询方式:
1 selector(String cssQuery)方法,通过css选择器查询标签元素Element对象
(Document对象和Element对象都可以使用)
怎么写cssQuery字符串??
查看JSoup帮助文档中的Selector类定义的cssQuery定义的语法
比如:
cssQuery=“name” 查询name 标签对象
cssQuery=”#itcast” 查询ID为itcast的标签
cssQuery=”name[id=’0001’]” 查询Id值为0001的name 标签
cssQuery=student[id=0001] age 查询Id值为0001的student标签的所有age子标签
2 XPath通过“特殊的语法”查询标签元素Element对象
XPath 使 用路径表达式 来选取 XML 文档中的节点或者节点集。
使用Jsoup的Xpath()需要额外导入一个jar包(JsoupXpath.jar)
1 根据document对象创建JXDocument对象
JXDocument jxDocument = new JXDocument (document);
2 JXDocument对象常见的方法
通过xpath语法查询标签元素
selN(String xpath) 返回List<JxNode>
sel(String xpath) 返回List<Object>
selNOne(String xpath) 返回JxNode
selOne(String xpath) 返回Object
可以通过JxNode对象转化为标签元素对象getElement()方法
3 Xpath的查询语法
详细的Xpath语法查看W3Cshool参考手册
Xpath = “ //student” 查询所以的student标签
Xpath =”//student//name” 查询所以的student标签下的name标签
Xpath = “//student[@id]” 查询含有id属性的student标签
Xpath = “//student[@id=’itcast’]” 查询id为itcast属性的student标签