schema的快速入门:
*创建一个schema文件 后缀名 .xsd
*根节点<schema>
**在schema文件里面
*属性 xmlns="http://www.w3.org/2001/XMLSchema"
-表示当前的xml文件是一个约束文件
targetNamespace="http://www.1234.cn/20211227"
-使用schema约束文件,直接通过这个地址引入约束文件
elementFormDefault="qualified"
步骤:
1.首先看xml中有多少元素
<element>
2.看简单元素和复杂元素
如果复杂元素
<complexType>
<sequence>
子元素
</sequence>
</complexType>
3.简单元素,写在复杂元素的
<element name="person">
<complexType>
<sequence>
<element name="name" type="string">
</element>
<element name="age" type="int">
</element>
</sequence>
</complexType>
</element>
4.在被约束的文件里引入 约束文件
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-表示xml是一个被约束的文件
xmlns="http://www.1234.cn/20211227"
-是约束文档里面的 targetNamespace
xsi:schemaLocation="http://www.1234.cn/20211227 1.xsd"
-targetNamespace 空格 约束文档的路径地址
*<sequence>:表示元素出现的顺序
<all>:元素只能出现一次
<choice>:元素只能出现其中的一个
maxOccurs="unbounded":表示该元素出现的次数
<any></any>:表示任意元素
*约束属性:
*必须写在复杂元素里面
**写在</complexType>之前
<attribute name="id" type="int" use="required"></attribute>
-name:属性名称
-type:属性类型
-use:属性是否必须出现
复杂的schema约束
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dept="http://www.231.cn/20211227"
xmlns="http://www.itcast.cn/20211227"
xsi:schemaLocation="http://www.itcast.cn/20211227 1.xsd http://www.231.cn/20211227 com.xsd"
sax解析的原理:
*解析xml有两种技术dom和sax
dom解析:
*根据xml的层级结构在内存中分配一个树形结构
**把xml标签,属性,文本封装成对象
sax方式:事件驱动,边读边解析
在Javax.xml.parsers包里面
**SAXParser
此类示例可以通过 SAXParserFactory.newSAXParser() 方法获得
-两个参数
-第一个xml的路径
-第二个事件处理器
**SAXParserFactory
示例 newInstance()方法获得
画图分析sax执行过程
-当解析到开始标签的时候自动执行startElement
-当解析到文本的时候自动执行characters
-当解析到结束标签的时候自动执行endElement
使用jaxp的sax方式解析xml
sax方式不能实现增删改操作,只能做查询
**打印出整个文档
执行parse方法,第一个参数xml路径,第二个事件处理器
创建一个继承事件处理器类
并重写里面的三个方法
获取所有name元素的值
-定义一个成员变量flag=false
-判断开始方法是否是name元素,如果是,把flag = true
-如果flag值是true,在characters方法里面打印内容
-当执行到结束方法是把flag值设置为false
获取第一个name元素的值
-定义两个成员变量flag=false,index= 1
-判断开始方法是否是name元素,如果是,把flag = true
-如果flag值是true 以及index是不是=1,在characters方法里面打印内容
-当执行到结束方法是把flag值设置为false index ++