XML约束之schema
来源:互联网 发布:apache用什么语言写的 编辑:程序博客网 时间:2024/05/18 17:01
schema简述
- schema符合xml的语法,(也就是一个xml文件)
- 一个xml中可以有多个schema,多个schema使用名称空间区分
- dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型
- schema语法更加复杂,schema目前不能替代dtd
schema语法(.xsd):
- 在schema文件里面
属性:
1) xmlns=”http://www.w3.org/2001/XMLSchema”(表示当前xml文件是一个约束文件)
2) targetNamespace=”http://www.itcast.cn/20151111”(随便写,但必须保证唯一,要和被约束文件中的地址相同,直接通过这个地址引入约束文件
3) elementFormDefault=”qualified”- 步骤:
(1)看xml中有多少个元素 ,简单元素和复杂元素
* 如果简单元素直接写
<element
name=”age” type=”int”/>
*如果复杂元素
<complexType> <sequence> <element name="age" type="int"/> </sequence> </complexType>
(2)简单元素,写在复杂元素的
<element name="person"> <complexType> <sequence>(表示元素出现的顺序) <element name="name" type="string"></element> <element name="age" type="int"></element> </sequence> </complexType> </element>
(3)在被约束文件里面引入约束文件
<person
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”(表示xml是一个被约束文件)
xmlns=”http://www.itcast.cn/20151111”(是约束文档里面 targetNamespace)
xsi:schemaLocation=”http://www.itcast.cn/20151111 1.xsd”>(targetNamespace 空格 约束文档的地址路径)
<sequence>
:表示元素的出现的顺序<all>
: 元素只能出现一次<choice>
:元素只能出现其中的一个
maxOccurs=”unbounded”: 表示元素的出现的次数(相当是属性)<any></any>
:表示任意元素
写在</complexType>
之前
<attribute name="id1" type="int" use="required"></attribute>
- name: 属性名称 - type:属性类型 int stirng - use:属性是否必须出现 required
* 引入多个schema文件,可以给每个起一个别名
<dept:name>100</dept:name> * 想要引入部门的约束文件里面的name,使用部门的别名 detp:元素名称
SAX解析:
- 事件驱动,边读边解析( 在javax.xml.parsers包里面)
- SAXParser
此类的实例可以从 SAXParserFactory.newSAXParser() 方法获得
- parse(File f, DefaultHandler dh)
** 第一个参数:xml的路径
** 事件处理器SAXParserFactory(实例 newInstance() 方法得到)
sax执行过程:
* 当解析到开始标签时候,自动执行startElement方法
* 当解析到文本时候,自动执行characters方法
* 当解析到结束标签时候,自动执行endElement方法重写里面的三个方法
使用dom4j解析XML文件
- dom4j,是一个组织,针对xml解析,提供解析器 dom4j
- 得到document
SAXReader reader = new SAXReader();
Document document = reader.read(url);- document的父接口是Node
如果在document里面找不到想要的方法,到Node里面去找
document里面的方法 getRootElement() :获取根节点 返回的是Element- Element也是一个接口,父接口是Node
- Element和Node里面方法
** getParent():获取父节点
** addElement:添加标签- element(qname)
** 表示获取标签下面的第一个子标签
** qname:标签的名称- elements(qname)
** 获取标签下面是这个名称的所有子标签(一层)
** qname:标签名称- elements()
** 获取标签下面的所有一层子标签
> * 查询所有name元素里面的值
1、创建解析器 2、得到document 3、得到根节点 getRootElement() 返回Element 4、得到所有的p1标签 * elements("p1") 返回list集合 * 遍历list得到每一个p1 5、得到name * 在p1下面执行 element("name")方法 返回Element 6、得到name里面的值 * getText方法得到值
> * 使用dom4j实现添加操作
步骤:
1、创建解析器
2、得到document
3、得到根节点
4、获取到第一个p1
* 使用element方法
5、在p1下面添加元素
* 在p1上面直接使用 addElement(“标签名称”)方法 返回一个Element
6、在添加完成之后的元素下面添加文本
* 在sex上直接使用 setText(“文本内容”)方法
7、回写xml
* 格式化 OutputFormat,使用 createPrettyPrint方法,表示一个漂亮的格式
* 使用类XMLWriter 直接new 这个类 ,传递两个参数
* 第一个参数是xml文件路径 new FileOutputStream(“路径”)
* 第二个参数是格式化类的值
使用dom4j实现在特定位置添加元素
步骤:
1、创建解析器
2、得到document
3、得到根节点
4、获取到第一个p1
5、获取p1下面的所有的元素
elements()方法 返回 list集合
使用list里面的方法,在特定位置添加元素
首先创建元素 在元素下面创建文本
使用DocumentHelper类方法createElement创建标签
把文本添加到标签下面 使用 setText(“文本内容”)方法
list集合里面的 add(int index, E element)
第一个参数是 位置 下标,从0开始
第二个参数是 要添加的元素
使用dom4j实现修改节点的操作
步骤:
1、得到document
2、得到根节点,然后再得到第一个p1元素
3、得到第一个p1下面的age
element(“”)方法
4、修改值是 30
使用setText(“文本内容”)方法
5、回写xml
使用dom4j实现删除节点的操作
1、得到document 2、得到根节点 3、得到第一个p1标签 4、得到第一个p1下面的school元素 5、删除(使用p1删除school) 得到school的父节点 - 第一种直接得到p1 - 使用方法 getParent方法得到 * 删除操作 - 在p1上面执行remove方法删除节点 6、回写xml
使用dom4j获取属性的操作
步骤:
1、得到document 2、得到根节点 3、得到第一个p1元素 4、得到p1里面的属性值 - p1.attributeValue("id1"); - 在p1上面执行这个方法,里面的参数是属性名称
- XML之Schema约束
- XML约束之schema
- xml之Schema约束
- XML笔记之Schema约束
- xml教程之约束schema
- XML简介之XML的Schema约束
- XML约束-Schema约束
- XML约束--schema约束
- xml约束之dtd约束和schema约束---3
- xml Schema 约束
- xml-schema约束
- XML -----Schema 约束
- XML Schema约束
- XML Schema约束
- XML-约束(schema)
- [xml]DTD & Schema 约束
- xml约束 Schema
- XML的约束:schema
- Android 文本监听接口TextWatcher详解
- JAVA求学之路第六天
- HNOI2012D1T3 排队 题解
- SpringBoot的RabbitMQ消息队列: 五、第四模式"Routing"
- JAVA求学之路第七天
- XML约束之schema
- python出现ImportError: No module named 'xxx'问题
- hibernate.hql是对类进行查询的
- 闭包 && 综合题
- Java基础(8):面向对象—抽象类和接口的区别和各自特点
- JAVA求学之路第八天(集合)
- TED如何掌控你的时间(第二天)
- 《Rethinking the Inception Architecture for Computer Vision》笔记
- 元素出现次数统计