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

细节体验:

  1. <>和?号之间不能有任何字符包含空格
  2. ?和xml指令名之间不能有任何的字符包含空格
  3. 版本号只能是1.0
  4. 编码和解码要一致
  5. 三个属性出现的顺序是固定的;【version / encoding / standalone】

u  元素

语法:

<元素名></元素名>

元素名的组成:

字母、数组、下划线和-

不能以数字开头

元素的分类:

根元素       一个XML文件中只能有一个根元素包含其他元素

<a></a>      带标签体的元素

<br/>       没有带标签体的元素,空元素

使用细节:

  1. XML是严格区分大小写的,对于元素、属性以及其他的指令。
  2. XML的元素是可以相互嵌套的
  3. 元素是先开始的后结束

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&quot;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  体验

  1. 编写一个测试的xml文件test.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>

<书架>

<书>

<书名>Java就业培训教程</书名>

<作者>张孝祥</作者>

<售价>39.00元</售价>

</书>

<书>

<书名>JavaScript网页开发</书名>

<作者>张孝祥</作者>

<售价>28.00元</售价>

</书>

</书架>

  1. 编写一个约束文件制定要约束的规则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)的更多相关文章

  1. Java学习笔记--xml构造与解析之Sax的使用

    汇总:xml的构造与解析 http://www.cnblogs.com/gnivor/p/4624058.html 参考资料:http://www.iteye.com/topic/763895 利用S ...

  2. Java学习笔记——XML入门

    以下内容来自网络 什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language). XML 是一种很像HTML的标记语言. XML 的设计宗旨是传输数据,而不是显示 ...

  3. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  4. 20145230《java学习笔记》第九周学习总结

    20145230 <Java程序设计>第9周学习总结 教材学习内容 JDBC JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作, ...

  5. Java学习笔记之---Servlet

    Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...

  6. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  7. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  8. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  9. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

随机推荐

  1. div高度自适应的问题

    对象height:100%并不能直接产生效果,是因为跟其父对象有关. #center{height:100%;} 上面的css样式是无效的,不会产生任何效果. 需要改写:   html,body{ m ...

  2. Apache Flume 安装文档、日志收集

    简介: 官网 http://flume.apache.org 文档 https://flume.apache.org/FlumeUserGuide.html hadoop 生态系统中,flume 的职 ...

  3. NBU 还原主/others服务器的SQLSERVER

    一.将数据库还原回主服务器 1.运行NetBackup MS SQL Client(10.10.0.14 administrator)2.设置连接属性 testsa 添加验证凭据 3.选择恢复,再选择 ...

  4. 使用透明flash+背景图片制作绚丽页面

    关键代码: <div style="width: 469px; height: 303px; background-image: url('https://images0.cnblog ...

  5. MySQL之——GROUP BY分组取字段最大值

    转载自:http://blog.csdn.net/l1028386804/article/details/54657412 假设有一个业务场景,需要查询用户登录记录信息,其中表结构如下: CREATE ...

  6. 解压*.tar.bz2的坑

    下了一个压缩包,tar -xf 解压不了 解决办法: 装了bzip2工具 bzip2 -d **.tar.bz2 //将文件解压成**.tar tar -xf **.tar //解包 听说可以 tar ...

  7. C语言中的undefined behavior

    参考: http://www.cnblogs.com/aoaoblogs/archive/2010/08/31/1813982.html

  8. macOS 10.13 安装Virtualbox失败

    macOS 10.13 安装Virtualbox失败 Enviroment macOS: 10.13 High Sierra virtualBox: 5.1.28 Problem descriptio ...

  9. ST-LINK驱动的安装

    1.下载ST-LINK驱动ST-LINK_USB_V2_1_Driver 双击dpinst_amd64.exe来安装. 成功会显示: 2.进入MDK5里面去配置ST-LINK 通过魔术棒选项: a.D ...

  10. Jenkins 邮箱配置及问题解决

    Failed to send out e-mail javax.mail.MessagingException: Could not connect to SMTP host: smtp.rytong ...