XML_2(解析)

一 解析:

解析:将文档中的数据加载到内存

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)]

(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标签
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小镇男孩~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值