Java学习笔记XML(3)
XML简介
XML即可扩展的标记语言。因此该语言中所有的标签都是没有预先定义的,开发者可以自己随意的指定。
目前为止所有的标记的语言都属于开源的语言。由W3C组织进行一个基本的维护。
因此大家学习这些语言的时候应该参考W3C公布的文档。
XML作用
1.可以用作软件的配置文件。
2.可以实现独立平台的数据传输。 C à XML à Java 天气预报
3.Web Service。
4.可以描述带关系的数据。
XML体验
XML文件其实在实际的开发中可以帮助开发者进行描述一些带关系的数据。
以上的数据需要XML进行存储。
1. 编写一个city.xml文件如下
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<中国>
<北京></北京>
<上海></上海>
<广州>
<天河区></天河区>
<花都区></花都区>
</广州>
</中国>
另存为为UTF-8的编码方式。
2. 使用浏览器打开该应用文件
至此XML的体验就完成了。因此需要快速的掌握XML的语法基础。
XML语法
如果要掌握XML语言的语法结构那么可以从以下几个方面进行入手:
u 声明指令
语法:
<?xml version=”” encoding=”” standalone=”” ?>
xml 是一个xml文件的指令名通知解析器以XML的方式进行解析
version 指定XML的版本,目前只能是1.0
encoding 指定XML文件的被解析时候的解码方式,一般的值是GBK或UTF-8
standalone 指定该文件时否是独立文件。默认值是yes,也可是no
细节体验:
- <>和?号之间不能有任何字符包含空格
- ?和xml指令名之间不能有任何的字符包含空格
- 版本号只能是1.0
- 编码和解码要一致
- 三个属性出现的顺序是固定的;【version / encoding / standalone】
u 元素
语法:
<元素名></元素名>
元素名的组成:
字母、数组、下划线和-
不能以数字开头
元素的分类:
根元素 一个XML文件中只能有一个根元素包含其他元素
<a></a> 带标签体的元素
<br/> 没有带标签体的元素,空元素
使用细节:
- XML是严格区分大小写的,对于元素、属性以及其他的指令。
- XML的元素是可以相互嵌套的
- 元素是先开始的后结束
u 属性
语法:
<元素名 属性名1=属性值1 属性名2=属性值2 …>
属性名的约束和元素的约束一致
属性值在设置的时候需要使用单引号或双引号引起来。
举例1:实现一个书的isbn属性。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book isbn="001">
<name>XML基础教程</name>
</book>
</books>
属性只是为了给一个元素添加一个标识,那么该标识使用子元素也可以。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book isbn="001">
<name>XML基础教程</name>
</book>
<book>
<isbn>002</isbn> à 子元素等价于属性
<name>XML基础教程</name>
</book>
</books>
u 特殊字符和CDATA区域
如果在编写XML文件的时候发现属性值或元素的标签体内容要输出具有特殊含义的字符,那么必须使用转义字符(实体)。
常用的转义字符
但是如果在标签体中大量的出现特殊字符,那么如果要使用转移字符那么就太繁琐了。
解决方案:CDATA区域
语法:
<![CDATA[
// 需要转移的大量字符数据
]]>
举例1:将以下的数据进行快速的转义。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book isbn="00"1">
<name>XML基础教程</name>
</book>
<book>
<isbn>002</isbn>
<name>XML基础教程</name>
<content>
<![CDATA[
<html>
<head>
</head>
<body>
</body>
</html>
]]>
</content>
</book>
</books>
u 注释
语言 |
注释 |
HTML |
<!-- --> |
CSS |
/* */ |
JavaScript |
// /* */ |
Java |
// /* */ /** */ |
XML |
<!-- --> |
JSP |
<%-- --%> |
举例1:给xml文件添加注释。
<!--XML文件声明-->
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--唯一的一个根元素-->
<books>
<!--一个book代表一本书-->
<book isbn="001">
<name>XML基础教程</name>
</book>
</books>
运行结果
u 样式指令
如果开发者希望浏览器在解析的XML数据的时候以指定的样式显示XML数据,那么就需要使用样式指令来设置XML的样式文件。
语法:
<?xml-stylesheet type=”text/css” href=”路径”?>
1. 编写一个books.xml文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book>
<id>0001</id>
<name>XML基础教程</name>
<author>焦宁波</author>
</book>
<book>
<id>0002</id>
<name>JavaEE高级教程</name>
<author>焦宁波</author>
</book>
</books>
2. 编写一个CSS样式文件
如果开发者没有编写指定的CSS文件但是已经使用了该指令引入的样式,那么浏览器会使用自身的默认的样式来显示XML数据。
默认的结果下:
编辑css样式如下
book{
background:#ff0000;
display:block;
margin-bottom:10px;
width:100px;
}
id,name,author{
display:block;
background:pink;
color:blue;
}
需要另存为为UTF-8。
运行结果
格式良好的XML和有效的XML文档
格式良好的XML即满足基本的XML语法的XML文档称之为格式良好的XML文档。
有效的XML文档即该文件的格式需要满足一定的约束文件。
约束文档是一个要制定约束规则的文件。
被约束文档是一个需要被约束的XML文件。
如果想使用约束文件约束被约束文件那么就需要在被约束文件中引入约束文件。
思考:
格式良好的XML不一定是有效的XML文档。
有效的XML文档一定是格式良好的XML文档。
XML约束技术
W3C提供了常用的约束技术来实现XML文档的约束。常用的技术有DTD(W3C推荐的官方约束标准技术),但是该技术已经过时了,所以民间有另一个约束技术Schema(民间标准)。
DTD约束
DTD即Document Type Definded(文档类型定义)。该技术所形成的约束文件必须以.dtd进行结尾,该文件并不是一个XML文件。是一个普通的文本文件。
u 体验
- 编写一个测试的xml文件test.xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
- 编写一个约束文件制定要约束的规则test.dtd
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
dtd文件约束的被约束文件编码是UTF-8,因此需要将约束文件另存为为UTF-8。
3. 在被约束文件中引入约束文件进行语法的约束
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--引入约束文件-->
<!DOCTYPE 书架 SYSTEM "test.dtd">
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
4. 使用浏览器进行查看是否满足指定的约束
浏览器虽然提供了查看一个XML文件是否满足指定的约束,但是开发者需要使用程序打开该功能。HTML+CSS+JavaScript
编写一个页面进行XML的有效性校验validate.html
<script>
// 获取校验器对象
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
// 设置是否是异步
xmlDoc.async="false"
// 打开校验的开关
xmlDoc.validateOnParse="true"
// 加载被约束的XML文件
xmlDoc.load("test.xml")
// 校验的结果
document.write("<br>Error Code: ")
// 输出校验的错误码
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
// 输出校验的错误原因
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
// 定位错误的行号
document.write(xmlDoc.parseError.line)
</script>
5. 运行浏览器打开校验的页面
如果现实如下说明校验成功
如果现实如下的信息说明不满足规则
J多学一招: 查看专业的软件开发中配置文件?
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd à 引入约束文件
version="2.5">
DTD语法
u 引入约束文件
u DTD基本语法
Schema约束
Schema语法
u 引入约束文件
u DTD基本语法
总结
熟练掌握XML的基本语法结构即可。
了解DTD和Schema的语法规则
掌握约束文件的引入方法(Spring框架)
Java学习笔记XML(3)的更多相关文章
- Java学习笔记--xml构造与解析之Sax的使用
汇总:xml的构造与解析 http://www.cnblogs.com/gnivor/p/4624058.html 参考资料:http://www.iteye.com/topic/763895 利用S ...
- Java学习笔记——XML入门
以下内容来自网络 什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language). XML 是一种很像HTML的标记语言. XML 的设计宗旨是传输数据,而不是显示 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- 20145230《java学习笔记》第九周学习总结
20145230 <Java程序设计>第9周学习总结 教材学习内容 JDBC JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作, ...
- Java学习笔记之---Servlet
Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
随机推荐
- Eclipse使用xdoclet1.2.3 生成hibernate配置文件和映射文件
用ant和xdoclet生成hibernate配置文件可以为我们省去很多配置的操作,废话不多说,直接给栗子: 测试环境: eclipse:Eclipse Java EE IDE for Web Dev ...
- Eclipse 安装Hibernate Tools 工具 提高开发效率
1.打开Eclipse 开发工具 2.配置使用hibernate Tools 3.选择search 选项卡,搜索 hibernate 关键字 点击Install Next finish ...
- Struts2 学习记录-1--Struts2中的配置文件
目录 1. web.xml 2. struts.xml 3. struts.properties文件 4.注解式开发 5.与Spring框架集成的配置 主要涉及3个配置文件:web.xml.strut ...
- MVC各层的职责
Model(模型):模型代表着核心的业务逻辑和数据(不要理解成Model只是实体类) View(视图):视图应该关注与如何展示数据,而不应该包含任何业务逻辑(业务逻辑应写在Model中) Contro ...
- Information Retrieval
[Information Retrieval] 1.信息检索/获取(Information Retrieval,简称IR) 是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用 ...
- web和wap网站的区别 (转)
WAP的全称是“无线应用协议(Wireless Application Protocol)”,是一种向移动终端提供互联网内容和先进增值服务的全球统一的开放式协议标准, 是简化了的无线Internet ...
- SQLServer性能优化之---水平分库扩展
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 第一次引入文件组的概念:http://www.cnblogs.com/dunitia ...
- Linux mmap函数简介
一.简介 Linux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内存的读取和修改, 实现对文件的读取和修改, 先来看一下mmap的函数声明: 头文件: ...
- python实现中文字符繁体和简体中文转换-乾颐堂
需求:把中文字符串进行繁体和简体中文的转换: 思路:引入简繁体处理库,有兴趣的同学可以研究一下内部实现,都是python写的 1.下载zh_wiki.py及langconv zh_wiki.py:ht ...
- MySQL中触发器
触发器是与某个事件相关的特殊存储过程,与存储过程不同的是,存储过程需要用 call 调用而出发器不需要使用call调用调用. 也就是自己预先定义好了,当某个事件发生时,就会自动出发触发器进行相关的操作 ...