您好,登录后才能下订单哦!
1.开发工具介绍
1、开发工具
JDK
eclipse(真正开发的用的是eclipse)————IBM发布
eclipse可以添加很多的插件(添加自己需要的插件)
myeclipse已经添加了很多的插件(收费)
2、myeclipse视图恢复最原始的样子(重置视图)
window--> Reset Perspective
3、切换视图
4、创建工程导入自定义安装的JDK
添加
5、修改快捷键
window--> preferences--> General--> Keys--> Content Assist--> Remove Binding
6、Junit测试
被测试的方法必须是:公共的、非静态、无返回值、无形参
Extensible Markup Language
可扩展标记语言
XML技术是W3C组织发布的
数据存储格式
保存和处理数据,同时保存和处理他们之间的关系
允许用户自定义标签,用标签保存数据,标签之间有层次关系
本质上是一段字符串,具有跨平台性的特性
经常用作应用程序配置文件
4、保存了XML数据的文件就叫做xml文件,后缀名为.xml
5、XML数据也可以以其他的方式存在(如在内存中构建XML数据),不要将XML语言狭隘的理解成xml文件。
6、浏览器内置了XML解析器,可以使用浏览器对XML进行校验
一个XML文件分为如下几部分内容:
1、文档声明 <?xml version=”1.0” encoding=”GB2312” standalone=”no” ?>
声明文档基本属性,包含且只包含一个文档声明,必须处在第一行 。
version 代表当前xml所遵循的xml标准,必须存在。
encoding告知解析器使用何种编码解析当前xml,默认值为ISO8859-1
standalone指定当前XML文档是否是一个独立文档,默认值为yes表示是一个独立文档
2、元素
1.<开始标签> 标签体 </结束标签>
<自闭标签/> ---> 不含标签体也不包含其他标签
2.有且仅有一个根标签
3.元素的命名规范:
区分大小写
不能以数字、标点符号、"_"开头。
不能以XML(或XML、或Xml 等)开头。
不能包含空格。
名称中间不能包含冒号(:)
1.一个标签可以有多个属性
2.属性的值要用单引号或双引号括起来,属性的之中包含双引号,就要用单引号了。
3.命名规范,参照元素的命名规范
1.注释不能出现在文档声明之前。
2.注释不能嵌套注释
1.都可以用来转义特殊字符。
2.CDATA区 <![CDATA[ ]]>
<![CDATA[这是要转义的内容]]>
被CDATA区扩起来的内容,将会被浏览器当作文本来处理。
3.转义字符
& = &
< = <
> = >
" = "
' = '
4.CDATA区和转义字符的区别
(1)CDATA区成段转义,转义字符一次只转义一个字符
(2)CDATA区转义的字符保存数据本来的格式,只是通知解析器按文本去处理。
转义字符改变了数据本身的内容,利用其他字符替代了转义字符。
6、处理指令 PI(processing instruction)<?xml-stylesheet type=”text/css” herf=”1.css” ?>
1.一段指令通知解析器以何种方式解析XML
指定解析器使用1.css去渲染当前的XML数据
2.文档声明就是一个最常见的处理指令。
编写一个文档来约束一个xml文档的写法,这称之为XML约束。
2、XML约束的作用
约束xml文档的写法
对xml进行校验
3、常见的XML约束技术
XML DTD
XML Schema
4、浏览器默认关闭DTD校验
myeclipse提供校验
5、如何在XML中引入一个DTD
(1)外部引入
1.外置的dtd文件后缀必须为.dtd,必须用utf-8编码保存.
2.xml文件中使用
(1)<!DOCTYPE 根元素名称 SYSTEM 文件的位置>
<!DOCTYPE 书架 SYSTEM "book.dtd">
SYSTEM表明引入的dtd,在当前文件系统中。
(2) <!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
PUBLIC表明引入的dtd,在网络公共位置中.
(2)内部引入
直接在xml中书写dtd
<!DOCTYPE 根元素名称[
dtd约束....
]>
(1)元素<!ELEMENT 元素名称 元素约束>
元素约束:可以是元素内容、或存放类型
1.存放类型:ANY/EMPTY
2.元素内容:子元素的列表
用小括号括起来
1.子元素之间可以使用逗号进行分割,表明子元素必须按照顺序出现
2.子元素之间可以使用竖线进行分割,表面子元素出现其中之一
3.#PCDATA 表明包含标签体
4. + 1次或多次
* 0次或多次
? 0次或一次
5.可以使用小括号进行组的操作
<!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>
(2)属性
<!ATTLIST 元素名称
属性名1属性值的类型整个属性的约束
属性名2属性值的类型 整个属性的约束
......
>
1.属性值的类型:
1.CDATA: 普通字符串
2.枚举 : 枚举列表
<!DOCTYPE 购物篮 [
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">
]>
3.ID: 必须唯一的,
ID 属性的值只能由字母,下划线开始,不能使用数字,不能出现空白字符
4.参数实体 &实体名称
2.属性约束:
#REQUIRED 必须存在的属性
#IMPLIED一个可选的属性,可有可无
#FIXED '固定值' 具有一个固定的属性值,指定了一个不是固定值的值则校验报错
'默认值' 默认属性值
<!ATTLIST 页面作者
姓名 CDATA #IMPLIED
年龄 CDATA #IMPLIED
联系信息 CDATA #REQUIRED
网站职务 CDATA #FIXED "页面作者"
个人爱好 CDATA "上网" //上网为默认属性值
>
(3)ENTITY(实体)
<!ENTITY >,就是对一大段内容的引用,可以简化代码的复用
引用实体:在xml中引用的实体叫做引用实体
<!ENTITY 实体名称 “实体内容” >
在xml语句里,用&实体名称,代替实体内容;
参数实体:在dtd中引用的实体叫做参数实体
<!ENTITY % 实体名称 "实体内容">
在DTD语句里,用%实体名称,代替实体内容;
利用java程序去增删改查(CRUD)xml中的数据--> xml编程
两种解析思想:
1.dom解析
1、将整个XML使用类似树的结构,保存在内存中,再对其进行操作。
2、是 W3C 组织推荐的处理 XML 的一种方式。
3、需要等到XML完全加载进内存才可以进行操作
4、耗费内存,当解析超大的XML时慎用。
5、可以方便的对xml进行增删改查操作
2.sax解析
1、逐行扫描XML文档,当遇到标签时触发解析处理器,采用事件处理的方式解析。 2、(Simple API for XML) 非官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。
3、在读取文档同时即可对xml进行处理,不必等到文档加载结束,相对快捷。
4、不需要将文档加载进内存,因此不存在占用内存的问题,可以解析超大XML。
5、只能读取XML中数据,无法进行增删改
利用这两种解析思想,实现了很多的解析api
1、既有dom方式也有sax方式,
2、这套解析api已经加入到j2se的规范中,不需要导入任何第三方开发包就可以直接使用这种解析方式.但是这种解析方式效率低下,没什么人用.
3、jaxp 的sax解析过程:
1、使用dom方式高效的解析xml.
pull
2、导入开发包,通常只需要导入核心包就可以了
3、如果在使用的过程中提示少什么包到lib目录下在导入缺少的包即可
4.与JDOM不同的是,dom4j使用接口和抽象基类。
5.dom4j不能跨着级别查元素
6.dom4j的解析过程
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();
Element bookName = root.element("书").element("书名");
String bookNameText = bookName.getText();
System.out.println(bookNameText);
public void selc_add_update_dele() throws DocumentException, IOException{
SAXReader reader = new SAXReader();
Document dom = reader.read("book.xml");
Element root = dom.getRootElement();
List<Element> list = root.elements();//root的直系元素,这里就是书
Element book2Ele = list.get(1);//第二本书
Element book2Name = book2Ele.element("书名");
System.out.println(book2Name.getText());
//1。创建<书>下的<特价>节点,并设置标签体
Element bargainPrice1 = DocumentHelper.createElement("特价");
bargainPrice1.setText("40.00");
//2.获取父标签<书>,将<特价>节点挂上去
Element book1 = root.element("书");
book1.add(bargainPrice1);
//3.更新特价的值
bargainPrice.setText("14.00");
//4.删除特价
bargainPrice1.getParent().remove(bargainPrice1);
//写到文件中
XMLWriter xwr = new XMLWriter(new
FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());
xwr.write(dom);
xwr.close();
}
简介:
1、xml的约束技术 --- 需要掌握名称空间的概念,会读简单的Schema就可以了
2、Schema是xml的约束技术,出现的目的是为了替代dtd
3、本身也是一个xml,非常方便使用xml的解析引擎进行解析,但它的扩展名通常为.xsd
优点:
4、对名称空间有非常好的支持
5、支持更多的数据类型,并且支持用户自定义数据类型
6、可以进行语义级别的限定,限定能力大大强于dtd
缺点:
7、相对于dtd不支持实体
8、相对于dtd复杂的多,学习成本比较的高
重点:
9、如何在xml中引入Schema --- !!!!!名称空间的概念:全世界独一无二的名字,用来唯一的标识某个资源,通常是公司的域名,只是名字而已并不真的表示资源的位置.
10、targetNamespace用于指定schema文档中声明的元素属于哪个名称空间。
11、elementFormDefault用于指定,该schema文档中声明的根元素及其所有子元素是否都属于targetNamespace所指定的名称空间。默认值为qualified,表示都属于指定的名称空间。若值为unqualified,表示只有根元素属于指定名称空间。
book.xsd文件:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace=“www.itcast.cn"
elementFormDefault="qualified">
<xs:element name='书架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='书' >
<xs:complexType>
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售价' type='xs:string' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
12、schemaLocation此属性有两个值。第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置,两者之间用空格分隔。使用schemaLocation属性时,也需要指定该属性来自哪里
book.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<itcast:书架 xmlns:itcast=“www.itcast.cn”
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“www.itcast.cn book.xsd"> //约束文件真正位置
<itcast:书>
<itcast:书名>JavaScript网页开发</itcast:书名>
<itcast:作者>张孝祥</itcast:作者>
<itcast:售价>28.00元</itcast:售价>
</itcast:书>
</itcast:书架>
~~~ Schema的语法---参照Schema的文档,了解即可
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。