day06_schema
来源:互联网 发布:红酒网络推广方案 编辑:程序博客网 时间:2024/06/06 08:54
一、schema约束
- dtd语法:
<!ELEMENT 元素名称 约束>
- schema符合xml的语法,xml语句
- 一个xml中可以有多个schema,多个schema使用名称空间区分,如Java的包名
- dtd里面有PCDATA类型,但是在schema里面可以支持多种数据类型(如 年龄,只能是整数,但schema可以定义一个整数类型)
- 语法更复杂,不能替代dtd
二、快速入门
w3c提供了属性和标签—>创建schema文件(.xsd)—>约束xml文件
根结点的名称为Schema
1,简单元素和复杂元素
<element name="person"> <complexType> <sequence> <element name="name" type="string"></element> <element name="age" type="int"></element> </sequence> </complexType> </element>
2,被约束文件中,如xml,引入约束文件
<person //解释如下:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"--表示xml是一个被约束文件xmlns="http://www.example.org/1"--表示约束文档里面的targetNamespace,url地址xsi:schemaLocation="http://www.example.org/1 1.xsd">--targetNamespace 空格 约束文档的地址路径
3.标签和属性
sequence:表示元素出现的顺序
all:元素只能出现一次
choice:只能出现其中一个
any:表示任意元素
maxOccurs=“unbounded” 表示出现次数没限制 <element name="name" type="double" maxOccurs="unbounded"/>
定义属性(必须是复杂元素):(写在 /complexType>之前)
use=”required”属性是否必须出现 <attribute name="p1" type="string" use="required"></attribute>
<!-- 数据文件 引用多个Schema --><company xmlns = "http://www.example.org/company" xmlns:dept="http://www.example.org/department" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd" > <employee age="30"> <!-- 部门名称 --> <dept:name>人力资源部</dept:name> <!-- 员工名称 --> <name>王晓晓</name> </employee></company>
4.sax解析原理
- 解析xml两种技术dom和sax
- 根据xml 的层级结构在内存中分配一个树形结构
- 把xml中标签,属性,文本封装成对象
- sax方式:事件驱动,边读边解析
- 在javax.xml.parsers包里面
SAXParser
此类的实例,从SAXParserFactory.newSAXParser();获得
paser(File f,DefaultHandler dh)
其中第一个参数:xml路径
第二个参数:事件处理器(把。。传递进来,相当于在方法里绑定了一个事件)自动执行事件SAXParserFactory
实例newInstance()方法得到
过程:
解析到开始标签,startElement方法,参数qName:返回标签名称
文本内容,characters方法,通过string构造方法,返回内容
结束标签,endElement方法,参数qName,返回标签名称
5.使用jaxp的sax方式解析xml
sax方式,不能增删改,只能查询操作
1.创建解析器工厂
2.创建解析器
3.执行parse方法
4.自己创建一个类,继承DefaultHandler
5.重写类里面的三个方法
- 获取所有name的值
定义一个成员变量boolean flag=false;
判断开始方法是否是name元素,如果是,flag=true;
如果flag=true时,打印出来里面的内容
结束方法里,再设置成flag=false;
- 获取第一个name元素值
定义一个成员变量 idx=1;
结束的时候,idx++;
character内容输出里面,判断flag==true && idx==1;
- day06_schema
- 【机器学习】--神经网络(NN)
- 【恍然大悟】【痛彻心扉】的领悟
- bzoj1001狼抓兔子——网络流平面图问题
- 洛谷P2617 Dynamic Ranking 树状数组套主席树
- FreeBASIC学习笔记——4.2 循环语句
- day06_schema
- Redis实战总结(三)
- php sdk 百度(API)智能语音识别
- c++中重载、隐藏和覆盖的区别
- 关于Google神牛Jeff Dean的笑话,非程序员勿入
- Hadoop3.0稳定版的安装部署
- pintos (6) --运算符优先级
- Android 5.0系统 style 默认窗口控件颜色值设置
- win7 DOS utf-8汉字乱码的问题