- 浏览: 76583 次
- 性别:
- 来自: 广州
最新评论
-
wayilau:
第24条,是不是有问题呀。。。
教你认人 -
xiaoBaoProgramme:
很好的一篇文章,顶。
html页面嵌套html页面 -
JUnique:
...
SSH -
yihuijie2011:
...
SSH -
linpark:
没事来看看~
SSH
XML基础 XML扩展 XML验证:DTD
Xml详细介绍
XML的设计目标是描述数据并集中与数据的内容。
XML标记可以自定义。
XML具有错误验证机制
XML区分大小写
XML标记的属性必须用“”或者‘’括起来
XML的强项
轻松表达多层结构的数据
可自由扩展
主要用途:
数据描述,数据交换
优点:平台无关,语言无关
软件系统之间通过标准的XML API读写XML格式的文档,从而完成数据交换的任务。
XML细节
标记
在< >中的称为开始标记
在</ >中的称为结束标记
不包含元素的标记称为空标 记如:<eric age=“80”/>
元素
开始标记与结束标记间的内容称为元素。
属性
下面的这个是属性:
<eric age=“80”>
……
</eric>
文本
<eric age=“80”>
Eric真是个好人啊!
</eric>
总体例子
XML声明
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
大多数XML文档以XML声明作为开始,它向解析器提供了关于文档的基本信息。
建议使用XML声明,但它不是必需的。如果有的话,那么它一定是文档的第一行内容。
为支持中文可以用utf-8,或者gb2312
XML声明
声明最多可以包含三个名称-值对(许多人称它们为属性,尽管在技术上它们并不是)。
1)version 是使用的XML 版本:1.0,1.1
2)encoding 是该文档所使用的字符集。
该声明中引用的ISO-8859-1 字符集包括大多数西欧语言用到的所有字符。
如没有指定encoding,XML 解析器会假定字符在UTF-8 字符集中,这是一个几乎支持世界上所有语言的字符和象形文字的Unicode 标准。
3)standalone(可以是yes 或no)定义了是否可以在不读取任何其它文件的情况下处理该文档。
如果XML文档没有引用任何其它文件,则可以指定standalone="yes"。
如果XML文档引用其它描述该文档可以包含什么的文件,
则可以指定standalone=“no”。缺省值为standalone="no"
注释
注释可以出现在文档的任何位置;它们甚至可以出现在根元素的前面或后面。
注释以<!--开始,以--> 结束。
注释不能在结束部分以外包含双连字符(--);除此之外,注释可以包含任何内容。
注释内的任何标记都被忽略
不要把注释放到某个节点的部分
实体
XML 规范预定义了五个实体。
< 代表小于符号 <
> 代表大于符号 >
" 代表一个双引号 ”
' 代表一个单引号(或撇号)‘
& 代表一个“与”符号。&
引用实体时一定是&开头,和;结尾
当然我们也可以进行自定义实体,
可以用浏览器或者eclips(需要插件)进行测试是否写对了
自定义实体(放在XML的声明后面和根结点前面,比如下例中为message)
CDATA
引用无格式内容(也就是说此时XML解释器对此段内容不做任何解释。因此也不要加任何实体符号)
语法规则
除空标记外,标签必须成对。
一份文档必须包含一个根元素。
所有的开始标签和结束标签必须匹配。
空标签必须以“/>”结束。
标签必须嵌套正确。
元素名称大小写敏感。
所有的属性值必须位于单引号或双引号中。
每一个元素的属性不允许出现超过一次。
XML工具
MyEclips的插件管理,不过有个bug,提示错误但是实际上没有错误,需要关闭再打开,看是否有错误。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 以下是一个自定义实体 -->
<!DOCTYPE user
[
<!ENTITY my "hello">
<!ENTITY you "you hello">
]>
<user>
<head>Dear mother &my;
</head>
<body> test 2 < 3
</body>
<te>
<!-- 这是一个测试程序 -->
testDemo is a textlist
</te>
<!-- 属性值必须用引用括起来 -->
<city name ="guangzhou"></city>
<!-- 引用无格式内容引用无格式内容 -->
<![CDATA[
public static void main(String [] args){
System.out.println("this is a demo");
}
]]>
<fi> &you;</fi>
</user>
对应的DTD
<!ELEMENT user (head,body,te,city,fi)>
<!ELEMENT head (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT te (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT fi (#PCDATA)>
<!ATTLIST city name CDATA #REQUIRED>
XML验证
扩展:得到自己的专用语言
验证:通过对扩展语言规范的学习,对一个特定的xml文件按此规范进行解释识别,看此xml是否正确。
DTD验证
文档类型定义(Document Type Definition)
DTD定义了XML文档内容的结构,保证XML以一致的格式存储数据。
精确的定义词汇表,对XML的内容施加约束。
XML允许用户为应用程序创建自己的DTD。
可以依据DTD来检查XML文档。这种检查过程被称为验证。
与DTD相符合的XML文档被认为是有效的文档。
通过DTD定义的词汇表以及文档语法,XML解析器可以检查XML文档内容的有效性。
DTD四种标记声明
元素(ELEMENT)
XML元素类型声明
<!ELEMENT elementName(contentModel)>
元素的内容模式
元素的内容通过内容模式来描述。DTD 内容模式的种类有:
EMPTY
#PCDATA
ANY
Elements
Mixed
EMPTY
元素不能包含任何数据,但可以有属性(前提是必须声明其属性)。
不能有子元素。
不能有文本数据(包括空白)。
#PCDATA
PCDATA
Parsed Character Data.
The text that will be parsed bya parser .
规定元素只包含已析的字符数据,而不包含任何类型的子元素的内容类型
ANY
元素可以包含任何类型的数据。子元素(必须在DTD中有定义)文本数据(包括空白)
Elements
元素由内容模式部件指定。
Mixed
所谓混合模式是指子元素中既可有文本数据又可有下级子元素。
<!ELEMENT review (#PCDATA|name)*> 此时表示同时出现
Any表示只能出现一个,而mixed可以出现多种类型
属性(ATTLIST)
特定元素类型可设置的属性&属性的允许值声明
在DTD中,可用如下语法声明元素的属性列表:
<!ATTLIST elementName attributeName attributeType >
attributeType
attributeDefault
实体(ENTITY)
可重用的内容声明
符号(NOTATION)
不要解析的外部内容的格式声明。
XML解析 与JAVA
XML与Java
XML中内容的一般存放在属性和文本之间。我们可以根据DTD中信息进行定位,读取我们想用的信息。
XML处理模式
文档对象模式
DOM:比较吃内存,一般够用
基于事件处理模式
SAX:省内存
DOM特点
以树型结构访问XML文档。
一棵DOM树包含全部元素节点和文本节点。
可以前后遍历树中的每一个节点。
整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。
将整个文档调入内存(包括无用的节点),浪费时间和空间。
一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)情况下使用。
Xml详细介绍
XML的设计目标是描述数据并集中与数据的内容。
XML标记可以自定义。
XML具有错误验证机制
XML区分大小写
XML标记的属性必须用“”或者‘’括起来
XML的强项
轻松表达多层结构的数据
可自由扩展
主要用途:
数据描述,数据交换
优点:平台无关,语言无关
软件系统之间通过标准的XML API读写XML格式的文档,从而完成数据交换的任务。
XML细节
标记
在< >中的称为开始标记
在</ >中的称为结束标记
不包含元素的标记称为空标 记如:<eric age=“80”/>
元素
开始标记与结束标记间的内容称为元素。
属性
下面的这个是属性:
<eric age=“80”>
……
</eric>
文本
<eric age=“80”>
Eric真是个好人啊!
</eric>
总体例子
XML声明
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
大多数XML文档以XML声明作为开始,它向解析器提供了关于文档的基本信息。
建议使用XML声明,但它不是必需的。如果有的话,那么它一定是文档的第一行内容。
为支持中文可以用utf-8,或者gb2312
XML声明
声明最多可以包含三个名称-值对(许多人称它们为属性,尽管在技术上它们并不是)。
1)version 是使用的XML 版本:1.0,1.1
2)encoding 是该文档所使用的字符集。
该声明中引用的ISO-8859-1 字符集包括大多数西欧语言用到的所有字符。
如没有指定encoding,XML 解析器会假定字符在UTF-8 字符集中,这是一个几乎支持世界上所有语言的字符和象形文字的Unicode 标准。
3)standalone(可以是yes 或no)定义了是否可以在不读取任何其它文件的情况下处理该文档。
如果XML文档没有引用任何其它文件,则可以指定standalone="yes"。
如果XML文档引用其它描述该文档可以包含什么的文件,
则可以指定standalone=“no”。缺省值为standalone="no"
注释
注释可以出现在文档的任何位置;它们甚至可以出现在根元素的前面或后面。
注释以<!--开始,以--> 结束。
注释不能在结束部分以外包含双连字符(--);除此之外,注释可以包含任何内容。
注释内的任何标记都被忽略
不要把注释放到某个节点的部分
实体
XML 规范预定义了五个实体。
< 代表小于符号 <
> 代表大于符号 >
" 代表一个双引号 ”
' 代表一个单引号(或撇号)‘
& 代表一个“与”符号。&
引用实体时一定是&开头,和;结尾
当然我们也可以进行自定义实体,
可以用浏览器或者eclips(需要插件)进行测试是否写对了
自定义实体(放在XML的声明后面和根结点前面,比如下例中为message)
CDATA
引用无格式内容(也就是说此时XML解释器对此段内容不做任何解释。因此也不要加任何实体符号)
语法规则
除空标记外,标签必须成对。
一份文档必须包含一个根元素。
所有的开始标签和结束标签必须匹配。
空标签必须以“/>”结束。
标签必须嵌套正确。
元素名称大小写敏感。
所有的属性值必须位于单引号或双引号中。
每一个元素的属性不允许出现超过一次。
XML工具
MyEclips的插件管理,不过有个bug,提示错误但是实际上没有错误,需要关闭再打开,看是否有错误。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 以下是一个自定义实体 -->
<!DOCTYPE user
[
<!ENTITY my "hello">
<!ENTITY you "you hello">
]>
<user>
<head>Dear mother &my;
</head>
<body> test 2 < 3
</body>
<te>
<!-- 这是一个测试程序 -->
testDemo is a textlist
</te>
<!-- 属性值必须用引用括起来 -->
<city name ="guangzhou"></city>
<!-- 引用无格式内容引用无格式内容 -->
<![CDATA[
public static void main(String [] args){
System.out.println("this is a demo");
}
]]>
<fi> &you;</fi>
</user>
对应的DTD
<!ELEMENT user (head,body,te,city,fi)>
<!ELEMENT head (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT te (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT fi (#PCDATA)>
<!ATTLIST city name CDATA #REQUIRED>
XML验证
扩展:得到自己的专用语言
验证:通过对扩展语言规范的学习,对一个特定的xml文件按此规范进行解释识别,看此xml是否正确。
DTD验证
文档类型定义(Document Type Definition)
DTD定义了XML文档内容的结构,保证XML以一致的格式存储数据。
精确的定义词汇表,对XML的内容施加约束。
XML允许用户为应用程序创建自己的DTD。
可以依据DTD来检查XML文档。这种检查过程被称为验证。
与DTD相符合的XML文档被认为是有效的文档。
通过DTD定义的词汇表以及文档语法,XML解析器可以检查XML文档内容的有效性。
DTD四种标记声明
元素(ELEMENT)
XML元素类型声明
<!ELEMENT elementName(contentModel)>
元素的内容模式
元素的内容通过内容模式来描述。DTD 内容模式的种类有:
EMPTY
#PCDATA
ANY
Elements
Mixed
EMPTY
元素不能包含任何数据,但可以有属性(前提是必须声明其属性)。
不能有子元素。
不能有文本数据(包括空白)。
#PCDATA
PCDATA
Parsed Character Data.
The text that will be parsed bya parser .
规定元素只包含已析的字符数据,而不包含任何类型的子元素的内容类型
ANY
元素可以包含任何类型的数据。子元素(必须在DTD中有定义)文本数据(包括空白)
Elements
元素由内容模式部件指定。
Mixed
所谓混合模式是指子元素中既可有文本数据又可有下级子元素。
<!ELEMENT review (#PCDATA|name)*> 此时表示同时出现
Any表示只能出现一个,而mixed可以出现多种类型
属性(ATTLIST)
特定元素类型可设置的属性&属性的允许值声明
在DTD中,可用如下语法声明元素的属性列表:
<!ATTLIST elementName attributeName attributeType >
attributeType
attributeDefault
实体(ENTITY)
可重用的内容声明
符号(NOTATION)
不要解析的外部内容的格式声明。
XML解析 与JAVA
XML与Java
XML中内容的一般存放在属性和文本之间。我们可以根据DTD中信息进行定位,读取我们想用的信息。
XML处理模式
文档对象模式
DOM:比较吃内存,一般够用
基于事件处理模式
SAX:省内存
DOM特点
以树型结构访问XML文档。
一棵DOM树包含全部元素节点和文本节点。
可以前后遍历树中的每一个节点。
整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能。
将整个文档调入内存(包括无用的节点),浪费时间和空间。
一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)情况下使用。
发表评论
-
Cookie跨域 cas
2011-10-27 17:30 1726正常的cookie只能在一个应用中共享,即一个cookie只能 ... -
JQuery中$.ajax()方法参数详解
2011-05-25 13:05 1661url: 要求为String类型的参数,(默认为当前页地址)发 ... -
jquery刷新页面
2011-04-27 23:51 962jquery刷新页面 局部刷新: 这个方法就多了去了,常见 ... -
spring MVC
2011-04-27 23:50 1519需要的JAR包有: spring2.jar cglib-nod ... -
Java hascode
2011-04-10 17:47 823java hascode Java中有两类集合(Colle ... -
spring原理
2011-04-10 00:03 8311、spring原理 s ... -
hibernate的缓存
2011-03-31 14:34 858缓存是介于应用程序和 ... -
Spring AOP之Hello World
2011-03-30 11:36 1012我们使用一个简单的例子来演示一下Spring中的AOP,这是一 ... -
数字推理题规律汇总
2011-03-29 16:48 1044□ 等差数列及其变式 【例题1】2,5,8,() A ... -
freemarker的模板标签获取
2011-03-28 13:23 1742In FreeMarker 2.2, Template has ... -
StringUtils函数全集
2011-01-13 16:45 1291StringUtils函数全集 Strin ... -
jquery+json+servlet
2011-01-11 13:54 5350jquery+json小例子 使用jquery发送请求到s ... -
java - 删除文件
2010-12-30 13:32 1116java删除文件 package IO.file; impo ... -
jquery 赋值函数
2010-12-28 11:14 886$("")是一个jquery对象,而不是一 ... -
jQuery的鼠标事件
2010-12-28 11:13 1946鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的。 ... -
获取鼠标在图片对象上的位置
2010-12-27 21:40 1198<!DOCTYPE HTML PUBLIC " ... -
window.opener 与 window.parent 的区别
2010-11-21 22:57 1029我们如果要用到iframe的值传到另一框架就要用到 windo ... -
几个常用代码在IE8和火狐下的对比
2010-11-19 14:44 9781、Input 有的浏览 ... -
window.open()运用
2010-11-18 17:24 1038window.open()支持环境: JavaScript1. ... -
java 环境变量
2010-05-06 10:34 2508电脑属性高级 > 环境变量 > 系统变量 > ...
相关推荐
pugixml是一款轻量级、高性能的C++库,专为XML解析和操作而设计。这个库由Artemev开发,提供了简单易用的API,使得在C++项目中处理XML文档变得非常便捷。本示例将详细介绍如何使用pugixml进行XML的读取和写入操作。 ...
在PowerBuilder(简称PB)这个强大的开发环境中,处理XML文件是一项常见的任务。XML(Extensible Markup Language)是一种用于存储和传输数据的通用格式,尤其在跨平台和网络应用中广泛使用。本示例主要探讨如何在...
TinyXML和TinyXML2是两个小型的开源库,专门用于解析和操作XML(eXtensible Markup Language)文档。这两个库都是用C++编写的,为C++开发者提供了方便的接口来读取、写入和操作XML数据。下面将详细介绍这两个库的...
易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...
andxml汉化版是一个xml文件反编译工具,可与APKTOOL反编译配合使用,APK文件使用APKTool反编译生成XML文件后,就可以直接通过它进行汉化编辑 注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。...
TinyXML-2 是一个简单、小型、高效的 C++ XML 解析器,可以被轻松集成到其他程序中。它使用文档对象模型(DOM)的方式解析XML,可解析 XML 文档,并根据该文档构建可读取、修改和保存的文档对象模型。 作为XML解析...
**Pugixml详解:一个高效易用的XML解析库** 在编程中,XML(Extensible Markup Language)是一种被广泛使用的数据交换格式,特别是在跨平台通信、配置文件和数据存储等领域。为了处理XML文档,开发者通常需要依赖...
使用java工具xml2axml.jar反编译AndroidManafest文件 通过xml2axml.jar工具反编译AndroidManafest文件 还原AndroidManafest.xml详细过程: 1、获取到apk 2、解压获取里面的AndroidManifest.xml文件 3、在xml2axml....
Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...
XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储数据,而非显示数据。在IT行业中,XML因其结构清晰、可扩展性强的特点,被广泛应用于数据交换、配置文件、Web服务等领域。本文...
TinyXML-2,通常以tinyxml2库的形式存在,是一个轻量级的C++库,专门用于解析和操作XML文档。这个库由李·斯坦普(Lee Stemp)开发,设计简洁,易于集成到各种项目中,特别是对于嵌入式系统和资源有限的环境。在给定...
在Qt框架中,XML文件是一种常见的数据存储格式,它提供了结构化的数据表示方式,便于程序读取和写入。QTreeWidget是Qt提供的一种用于显示树状结构数据的控件,它可以很好地展示XML文件的层次结构。QXml是Qt中的XML...
TinyXML2是一个小型、快速且易于使用的C++库,用于解析和生成XML文档。这个库的设计目标是简单、高效,并且适用于嵌入式系统。在本文中,我们将深入探讨如何使用TinyXML2来解析和创建XML文件,特别是涉及到CDATA区段...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在软件开发、Web服务、配置文件等领域。本文将深入探讨XML与JavaBean之间的转换、XML标签的大小写规则、XML特殊符号的处理以及CDATA的生成。 ...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换、文档存储等领域。TinyXML2是轻量级的C++ XML解析库,它提供了简单、直接的方式来读写XML文档。本项目是基于tinyxml2...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。XML Schema(通常缩写为XSD)则是为XML文档定义结构和数据类型的规范,它允许我们对XML文档进行更严格...
- 库的主要类包括`XMLDocument`(XML文档对象)、`XMLElement`(XML元素)、`XMLText`(XML文本)、`XMLComment`(XML注释)和`XMLAttribute`(XML属性)等。 2. **解析XML文件** - 使用`XMLDocument::LoadFile()...
XMLParser是一种用于解析XML文档的C++实现,它旨在提供简单、小巧且稳定的解决方案,以处理XML数据。XML,即可扩展标记语言,是用于存储和传输数据的标准格式,广泛应用于配置文件、数据交换和文档结构化等领域。XML...
XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,广泛应用于软件开发、数据存储和网络通信等领域。Matlab作为一个强大的数值计算和数据分析环境,也提供了与XML交互的功能,这主要通过XML ...
(2) 解压Xml Tools 2.4.8 Unicode.zip,关闭Notepad++ (3) 将xmltools子文件夹下的XMLTools.dll拷贝至Notepad++的plugins子文件夹 (4) 将ext_libs子文件夹下的所有dll文件拷贝至Notepad++的根目录(与notepad++.exe...