黑马程序员技术交流社区
标题:
【石家庄校区】XML
[打印本页]
作者:
巴拉巴拉x
时间:
2018-5-21 10:15
标题:
【石家庄校区】XML
本帖最后由 巴拉巴拉x 于 2018-5-21 10:19 编辑
XML
XML作为配置文件完成模拟Tomcat
什么是XML?
可扩展的标记语言
允许用户自定义标签
XML任何语言都可以解析
作用
传输和存取数据
限制传输数据用JSon,存取数据用数据库
软件的配置文件
XML的使用
XML的语法
基本语法
查W3Shool文档
XML的语法
XML的文档声明
通常出现在XML文档的第一行第一列
<?xml 属性名="属性值" 属性名="属性值" ?>
属性有三个
version是必需的,一般是1.0,2.0不向下兼容,所以一般使用1.0
encoding:字符集,是使用浏览器打开的时候采用的默认的字符集的编码.(可选)
standalone:描述XML文档是否需要依赖其他的文件,(可选)值是yes或者no.
XML的注释
和html一样:
XML的元素
查W3Shool文档的XML
命名规则
元素就是标签
名称中不能包含 ":"
XML的属性
命名规则和元素差不多
属性值需要使用引号
XML的特殊字符和CDATA区
特殊字符
< ; 是 <
> ; 是 >
& ; 是 &
&apos 是 '(单引号)
分号要挨着特殊字符结尾,中间不能有空格.
CDATA区
character Data的缩写
写在这个区域的都会被当做字符串,不会当做特殊字符
<![CDATA[ 内容 ]]>
XML的解析
概念
从XML文档中获得想要的信息(通过代码完成)
XML解析的方式
DOM解析
Document Object Model
SAX解析
Simple Api for XML
DOM和SAX的区别
DOM方式就是把这个文档以DOM树的形式加载到内存中然后进行解析
缺点:如果文档特别大,容易导致内存溢出
优点:可以对XML进行增删改的操作
SAX方式:是以事件驱动的方式,逐行进行解析的.
缺点:不能对文档进行增删改的操作
优点:就算文档特别大不会导致内存的溢出
针对这两种解析方式,不同的公司提供了不同的API的实现
JAXP:SUN公司提供的一套XML的解析的API
JDOM:开源组织提供了一套解析XML的API叫jdom
DOM4J:开源组织提供了一套解析XML的API叫dom4j
pull:主要应用在Android手机的解析
使用DOM4J来解析
导入jar包
创建解析器
SaxReader sr = new SaxReader();
解析文档获得代表整个文档的对象:document,包含element ,attribute,text这三个同城为node(节点).NOde就相当于java中的Object.
Document dc = sr.read("文件路径");
先要获得根节点
Element root = dc.getRootElement();
从根节点开始查找其他节点:element(),elements();
Element el = root.element("元素名");根节点下的第一级元素中指定元素第一次出现的那个元素
String s = el.getText(),元素对象中的文本
XPath
dom4j 支持XPath的jar包
jaxen.jar
dom4j的XPath支持的API:
LIst
Node
常用的命令
看API中的实例2,5,6
XML的约束
用来约束XML的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数
用来规范XML的写法
XML的约束的种类及其区别
查看w3shool
两种
DTD
一个XML文件只能引入一个DTD
Schema
一个XML文件可以引入多个Schema文件
引入位置在schema标签下引入.(应该是根标签吧?)
如果多个Schema文件中定义了同一个标签或者属性,如何处理?
不同的名称空间起不同的名字(冒号右边是名字)
如何区分不同的XML文件哪个是约束文件哪个是被约束文件
看 "
http://www.w3.org/2001/XMLSchema-instance
"中有没有 "-instance",有就是被约束的,没有就是约束约束别人的.
区别
DTD的语法是自成一体的,Schema的语法就是XML的语法
Schema更容易被解析器所解析,且他支持名称空间而DTD不支持名称空间
Schema有比DTD更加强大的语义和语法的约束
DTD的语法
引入方式由两种
内部DTD
外部DTD
本地DTD
system
网络DTD
public
Schema的语法
xmlns:xml name space
简单标签:没有子元素,直接写文本的
复杂标签:里面包含子元素的
名称空间
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2