JavaScript笔记06

1.schema约束
    dtd语法:  <!ELEMENT 元素名称 约束>
    schema符合xml的语法,xml语句
    一个xml中,可以有多个schema.多个schema使用名称空间来区分(类似于java包名)
    dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型
        比如  年龄只能是整数,在schema可以直接定义一个整数类型
    schema语法更加复杂,目前还不能替代dtd

2.schema的快速入门
    创建一个schema文件.后缀名是.xsd
        根节点<schema>
    步骤:
        1.看xml中有多少个元素,就写几个<element>
            在schema文件里面,属性:
                xmlns="http://www.w3.org/2001/XMLSchema"
                --表示当前xml文件是一个约束文件
                targetNamespace="http://www.example.org/1"
                --直接通过这个地址来引入约束文件
                elementFormDefault="qualified">
                --质量良好
        2.复杂元素
            	<element name="person">
            		<complexType>
            			<sequence>
            				子元素
            			</sequence>
            		</complexType>
            	</element>
        3.简单元素。写在复杂元素的<sequence>标签下
                <sequence>
                    <element name="name" type="string"></element>
                    <element name="age" type="int"></element>
                </sequence>
        4.在被约束文件里引入约束文件
                <person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    --表示xml是一个被约束文件
                xmlns="http://www.itcast.cn/20151111"
                    --是约束文档中的targetNameSpace
                xsi:xsi:schemaLocation="http://http://www.itcast.cn/20151111 1.xsd">
                    -- targetNameSpace 空格 约束文档的路径地址
            <sequence> 表示元素出现的顺序
            <all>      表示元素只能出现一次
            <choice>   表示元素只能出现其中的一个
            maxOccurs="unbounded" 表示元素出现的次数
            <any></any> 表示可以出现任意的元素
        可以约束属性
            写在复杂元素中,写在</complexType>之前。
            <attribute name="id1" type="int" use="required"></attribute>
                    --use:属性是否必须出现 ="required"
        引入多个schema文件,可以给每个起一个别名
            <employee age="30">
                <!--部门名称-->
                <dept:name>100</dept:name>
                    *要想引用部门的约束文件里的name,要使用部门的别名 dept:元素名称
                <!--员工名称-->
                <name>cbz</name>
            </employee>
            
3.sax解析的原理
	*解析xml有两种技术:
		dom	:	根据xml层级结构,在内存中分配一个树形结构。把xml中的标签,熟悉,文本都封装成对象。
		sax	:	事件驱动,边读边解析
			在 java.xml.parser 包里面
				SAXParser
					此例的实例可以从 SAXParserFactory.newSAXParser() 方法获得
					- parse(File f ,DefaultHandler dh)
						*两个参数
						**第一个参数 : xml的路径
						**事件处理器 , 
				SAXParserFactory
					实例 newInstance()方法得到
			sax执行过程:
				当解析到开始标签的时候,自动执行startElement方法
				当解析到文本的时候,自动执行characters方法
				当解析到结束标签的时候,自动执行endElement方法
				
4.使用jaxp的sax方式来解析xml
		sax方式不能实现增删改操作,只能做查询操作
		
		**打印出整个文档
			执行parse方法,第一个参数是xml的路径,第二个参数是事件处理器
				创建一个类,继承事件处理器的类
				重写里面的三个方法
				
		**获取到所有name元素的值
			定义一个成员变量 flag = false
			判断开始方法是否是name元素,如果是name元素,把flag设置为ture	
			如果flag是ture,在characters方法里面打印内容
			当执行到结束方法的时候,把flag设置回false
			
		**获取到第一个name元素的值
			定义一个成员变量 idx = 1
			在结束方法的时候,idx++
			想要打印出第一个name元素的值
				在characters方法里面判断,flag = ture 并且 idx = 1 的时候,再打印内容
5.使用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:添加标签
					
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值