黑马程序员技术交流社区
标题: 【石家庄校区】 Day12 XML [打印本页]
作者: 18032086639 时间: 2018-12-21 19:27
标题: 【石家庄校区】 Day12 XML
本帖最后由 小石姐姐 于 2018-12-28 09:02 编辑
XML
1.概念
可扩展标记语言
*可拓展: 标签都是自定义的
2.功能
*存储数据
**1.配置文件去使用*** 可以作为一种数据协议进行传输
**2.可以作为一种数据协议进行传输数据(跨平台)
3.与html的区别
1.xml标签都是自定义的,html标签是预定义.
2.xml的语法严格,html语法松散
3.xml是储存数据的,html是展示数据
*w3c 万维网联盟
2.语法:
*基本语法
xml文档的后缀名是: .xml
xml第一行必须定义为文档声明
xml文档中有且只有一个根标签
标签中可以存在属性和内容
属性值必须使用(单双都可以)引起来
标签必须有结束语
xml标签名称区分大小写
后缀为.xml
*快速入门
*组成部分
1.文档声明:
格式: <?xml属性列表?>
属性列表:
version 版本号 必须的属性
encoding 编码方式 告知解析引擎当前文档使用的字符集,默认值ISO-8859-1
standalone 是否独立
取值:
yes 不依赖其他文件
no 依赖其他文件
2.指令
3.标签
4.属性
id属性值唯一
5.文本
CDATA区:在该区域中的数据会被原样显示
格式:<![CDATA[
...
]]>
约束:规定xml文档的书写规则
座位框架的使用者(程序员):
1.能够在xml中引入约束文档
2.能够简单的读懂约束文档
分类:
1.DTD 简单的约束技术
引入dtd 文档到xml文档中
内部dtd 将约束规则定义在xml文档中
外部dtd 将约束的规则定义在外部的dtd文档中
本地: <!DOCTYPE 根标签名 SYSTEM "dtd文件的位置"
网络:<!DOCTYPE 根标签名 Public "dtd文件名字" "dtd文件的位置URL">
缺陷:
2.schema: 一种复杂的约束技术
* 引入:
1.填写xml文档的根元素
2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"
[Java] 纯文本查看 复制代码
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itcast.cn/xml"
xsi:schemaLocation="http://www.itcast.cn/xml student.xsd">
*****dtd约束和schema的区别
1.dtd约束文件后缀名是.dtd,schema约束文件后缀.xsd
2.schema约束比dtd约束功能更强大
3.dtd约束只能引入一个约束文件,schema约束可以引入多个文件
4.schema约束支持命名空间(名称空间) namespace
3. 解析:操作xml文档,将文档中的数据读取到内存中
* 操作xml文档
1. 解析(读取):将文档中的数据读取到内存中
2. 写入:将内存中的数据保存到xml文档中。持久化的存储
****** 解析xml的方式:
1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
* 优点:操作方便,可以对文档进行CRUD的所有操作
* 缺点:占内存,可能会造成数据溢出
2. SAX:逐行读取,基于事件驱动的。
* 优点:不占内存,执行效率快
* 缺点:只能读取,不能增删改
******* xml常见的解析器:
1. JAXP:sun公司提供的解析器,支持dom和sax两种思想
2. DOM4J:一款非常优秀的解析器
3.Jsoup:jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。
它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
4. PULL:Android操作系统内置的解析器,sax方式的。
* Jsoup:
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。
它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
* 快速入门:
* 步骤:
1. 导入jar包
2. 获取Document对象
3. 获取对应的标签Element对象
4. 获取数据
对象的使用:
Jsoup:工具类,可以解析html或xml文档,返回Document
*parse解析html或者xml文档.
* parse:解析html或xml文档,返回Document
* parse?(File in, String charsetName):解析xml或html文件的。
* parse?(String html):解析xml或html字符串
* parse?(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
2. Document:文档对象。代表内存中的dom树
* 获取Element对象
* getElementById?(String id ):根据id属性值获取唯一的element对象
* getElementsByTag?(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute?(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue?(String key, String value):根据对应的属性名和属性值获取元素对象集合
3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
4. Element:元素对象
1. 获取子元素对象
* getElementById?(String id):根据id属性值获取唯一的element对象
* getElementsByTag?(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute?(String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue?(String key, String value):根据对应的属性名和属性值获取元素对象集合
2. 获取属性值
* String attr(String key):根据属性名称获取属性值
3. 获取文本内容
* String text():获取文本内容
* String html():获取标签体的所有内容(包括字标签的字符串内容)
5. Node:节点对象
* 是Document和Element的父类
* 快捷查询方式:
1. selector:选择器
* 使用的方法:Elements select?(String cssQuery) * 语法:参考Selector类中定义的语法
2. XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
* 使用Jsoup的Xpath需要额外导入jar包。
* 查询w3cshool参考手册,使用xpath的语法完成查询
*******
什么是xml
可扩展标记语言
xml的作用
**1.作为配置文件存在
**2.可以作为一种数据协议进行传输数据(跨平台)
移动端 xmpp协议
后台 webservice
3.定义有格式的数据
xml缺点
浪费流量
xml语法格式=
<?xml version="1.0" encoding="utf-8" ?>
<根标签>
<子标签 属性="">
内容
</子标签>
</根标签>
注意:
1.<?xml version="1.0" ?>只能放在第一行第一列
2.一个xml文档中只能有一个根标签
3.根标签中支持子标签
4.标签中可以存在属性和内容
5.文件的后缀为.xml
6.encoding默认值是ISO-8859-1
CDATA
<![CDATA[
内容
]]>
约束:限制
dtd约束和schema约束的区别!!!!!
1.dtd约束文件后缀名是.dtd,schema约束文件后缀.xsd
2.schema约束比dtd约束功能更加强大
3.dtd约束只能引入一个约束文件,schema约束可以引入多个文件
4.schema约束支持命名空间(名称空间) namespace
xml的解析方式(原理!!!)
1.dom解析
把文档全部加载,可以增删改查,可能导致内存溢出
2.sax解析
逐行解析,解析是基于事件驱动的,只能读取,对内存开销小,速度快
xml的解析器都有哪些(解析xml的jar包)
jaxp
*dom4j
*jsoup(咱们学习的)
pull(基于安卓!!)
(获取而不是修改)
1.jar包放在项目根目录下的libs目录下
2.要解析的xml文件在src目录下
url url = 类名.classgetclassloader().getresource("xml");
string s=url.getpath;
jsoup 使用步骤
1.加载xml文件获取document对象
2.通过document对象获取指定标签
3.通过指定标签可以继续查找子内容
4.通过标签获取属性值或者是内容 -->区分属性和内容
attr("属性名称");
text(); 内容
html(); 带标签的内容
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |