- xml
xml: eXtendsible markup language 可扩展的标记语言
xml的作用:
1、可以用来保存数据
2、可以用来做配置文件
3、可以当成数据传输载体
文档声明
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
//version表明在解析这个xml的时候,使用什么版本的解析器解析
//encoding表明在解析该文件时使用什么编码格式
//standalone : no - 该文档会依赖关联其他文档 , yes-- 这是一个独立的文档
根元素
文档声明下来的第一个元素叫做根元素 (根标签),例:
<?xml version="1.0" encoding="utf-8"?>
<people>
<name>张三</name>
<sex>男<sex>
</people>
这里的people就为该xml的根标签。
标签里面可以嵌套标签
标签里面也可以设置属性,例如:
<name id="111"></name>
xml命名规则
XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
命名尽量简单,做到见名知义
简单元素:
元素里面包含了普通的文字
复杂元素:
元素里面还可以嵌套其他的元素
非法字符
在 XML 中仅有字符 “<“和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。某些文本,比如 JavaScript 代码,包含大量 “<” 或 “&” 字符。为了避免错误,可以将脚本代码定义为 CDATA。
CDATA:character data
CDATA 部分由 “<![CDATA[" 开始,由 "]]>” 结束,CDATA 部分中的所有内容都会被解析器忽略。例如:
<address>
<![CDATA[<a href="#">地址</a>]]>
</address>
xml解析方式
就是获取元素里面的字符数据或者属性数据,常用的有两种:
DOM
SAX
针对以上两种解析方式, 给出的解决方案有:
1、japx
2、jdom
3、dom4j(使用比较广泛)
dom4j解析流程
- 创建SaxReader对象
- 指定解析的xml
- 获取根元素。
- 根据根元素获取子元素或者下面的子孙元素
//创建SaxReader对象
SaxReader reader=new SaxReader();
//指定解析的xml源
Document doc=reader.read(new File("路径"));
//获取根元素
Element rootelement=doc.getRootElement();
//获取根元素下的子元素
rootelement.element("元素名");
//获取根元素下的子元素下的子元素,并获取元素中的值
rootelement.element("元素名").element("元素名").getText();
//获取根元素下的所有子元素
List<Element> elements = rootelement.elements();
xml约束
1、DTD
DTD的引入:
①引入网上的DTD: 文档类型 根标签名字 网络上的dtd(PUBLIC) dtd的名称 dtd的路径
<!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd">
②引入本地的DTD:文档类型 根标签名字 引入本地的DTD dtd的位置
<!DOCTYPE stus SYSTEM "known.dtd">
③直接在文档中添加DTD:
<!DOCTYPE stus [
<!ELEMENT stus (stu)>
<!ELEMENT stu (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
2、Schema(.xsd)
一个xml可以引用多个Schema约束,但是只能引用一个DTD
约束文档:
xmlns : xml namespace : 名称空间 / 命名空间 参照w3c标准
targetNamespace : 目标名称空间 。 下面定义的那些元素都与这个名称空间绑定上。
elementFormDefault : 元素的格式化情况。 -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="aaa" //引号里面随便写
elementFormDefault="qualified">
复杂元素:complexType
有序:sequence