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语言,只要生成的编译文件能匹 ...
随机推荐
- MobaXterm 错行,乱码
最近使用MobaXterm ssh,发现进入ssh显示中文没问题.但如果用VIM编辑文件时如果有中文,修改插入操作有时就会有串行乱码情况,改vim编码也不行.都没有完美解决.最后发现只需要在MobaX ...
- flume 配置说明
Flume中的HDFS Sink应该是非常常用的,其中的配置参数也比较多,在这里记录备忘一下. channel type hdfs path 写入hdfs的路径,需要包含文件系统标识,比如:hdfs: ...
- OAuth2.0协议之新浪微博接口演示
新浪微博接口调用数据代码: <?php /** * @ Author : LiBo * @ Date : 2013-10-25 * @ File : weiboapi.php * * @ 说明: ...
- Division of Line Segment
Division of Line Segment /** */ void Line::EqualDivision(int nCount, QLineF fline, QList<QPointF& ...
- 五款免费的UML建模工具
1.免费UML建模工具推荐:JUDE–community 2.免费UML建模工具推荐:UMLet 3.免费UML建模工具推荐:ArgoUML 4.免费UML建模工具推荐:BOUml 5.免费UML建模 ...
- ibatis 常用标签
prepend:自动在前面加上:自动新手:自动预:自动前置 property:属性 compareValue:指定的常数,值 //判断不相等: <isNotEqual prepend=" ...
- Facebook对MySQL全表扫描性能的改进
原文博客如下: http://yoshinorimatsunobu.blogspot.com/2013/10/making-full-table-scan-10x-faster-in.html 如下是 ...
- 【转】C中的静态存储区和动态存储区
一.内存基本构成 可编程内存在基本上分为这样的几大部分:静态存储区.堆区和栈区.他们的功能不同,对他们使用方式也就不同. 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个 ...
- 在Word 中撰写并发布到博客的帮助
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- ios中改变UIImagePickerController页面的button的文字为中文
可以在工程中直接 project-->info-->Localization native development region 赋值为 zh_CN