`
qepipnu
  • 浏览: 76579 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多
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 规范预定义了五个实体。
 &lt; 代表小于符号 <
 &gt; 代表大于符号 >
 &quot; 代表一个双引号 ”
 &apos; 代表一个单引号(或撇号)‘
 &amp; 代表一个“与”符号。&
 引用实体时一定是&开头,和;结尾
 当然我们也可以进行自定义实体,
 可以用浏览器或者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 &lt; 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)情况下使用。

分享到:
评论
1 楼 kaidi0314 2010-04-05  
学习了,但要短点,精简点,就更好。

相关推荐

    pugixml读写XML示例

    pugixml是一款轻量级、高性能的C++库,专为XML解析和操作而设计。这个库由Artemev开发,提供了简单易用的API,使得在C++项目中处理XML文档变得非常便捷。本示例将详细介绍如何使用pugixml进行XML的读取和写入操作。 ...

    pb下读写xml文件的例子.rar_pb_pb 读取xml_pb 读取xml文件_pb9 xml_pb下读写xml文件的例子

    在PowerBuilder(简称PB)这个强大的开发环境中,处理XML文件是一项常见的任务。XML(Extensible Markup Language)是一种用于存储和传输数据的通用格式,尤其在跨平台和网络应用中广泛使用。本示例主要探讨如何在...

    tinyxml与tinyxml2

    TinyXML和TinyXML2是两个小型的开源库,专门用于解析和操作XML(eXtensible Markup Language)文档。这两个库都是用C++编写的,为C++开发者提供了方便的接口来读取、写入和操作XML数据。下面将详细介绍这两个库的...

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    andxml xml解密工具

    andxml汉化版是一个xml文件反编译工具,可与APKTOOL反编译配合使用,APK文件使用APKTool反编译生成XML文件后,就可以直接通过它进行汉化编辑 注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。...

    XML解析工具- TinyXML2 -源代码 - C++

    TinyXML-2 是一个简单、小型、高效的 C++ XML 解析器,可以被轻松集成到其他程序中。它使用文档对象模型(DOM)的方式解析XML,可解析 XML 文档,并根据该文档构建可读取、修改和保存的文档对象模型。 作为XML解析...

    pugixml 一个很好用的XML类

    **Pugixml详解:一个高效易用的XML解析库** 在编程中,XML(Extensible Markup Language)是一种被广泛使用的数据交换格式,特别是在跨平台通信、配置文件和数据存储等领域。为了处理XML文档,开发者通常需要依赖...

    xml2axml反编译AndroidManafest文件

    使用java工具xml2axml.jar反编译AndroidManafest文件 通过xml2axml.jar工具反编译AndroidManafest文件 还原AndroidManafest.xml详细过程: 1、获取到apk 2、解压获取里面的AndroidManifest.xml文件 3、在xml2axml....

    DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY 文档

    Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...

    Xml完全操作 XML增删改查

    XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储数据,而非显示数据。在IT行业中,XML因其结构清晰、可扩展性强的特点,被广泛应用于数据交换、配置文件、Web服务等领域。本文...

    tinyxml2.h tinyxml2.cpp文件

    TinyXML-2,通常以tinyxml2库的形式存在,是一个轻量级的C++库,专门用于解析和操作XML文档。这个库由李·斯坦普(Lee Stemp)开发,设计简洁,易于集成到各种项目中,特别是对于嵌入式系统和资源有限的环境。在给定...

    Qt读写Xml文件,QTreeWidget显示Xml和导出Xml文件

    在Qt框架中,XML文件是一种常见的数据存储格式,它提供了结构化的数据表示方式,便于程序读取和写入。QTreeWidget是Qt提供的一种用于显示树状结构数据的控件,它可以很好地展示XML文件的层次结构。QXml是Qt中的XML...

    tinyxml2解析和创建xml样例

    TinyXML2是一个小型、快速且易于使用的C++库,用于解析和生成XML文档。这个库的设计目标是简单、高效,并且适用于嵌入式系统。在本文中,我们将深入探讨如何使用TinyXML2来解析和创建XML文件,特别是涉及到CDATA区段...

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在软件开发、Web服务、配置文件等领域。本文将深入探讨XML与JavaBean之间的转换、XML标签的大小写规则、XML特殊符号的处理以及CDATA的生成。 ...

    基于tinyxml2的xml操作库再封装

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换、文档存储等领域。TinyXML2是轻量级的C++ XML解析库,它提供了简单、直接的方式来读写XML文档。本项目是基于tinyxml2...

    根据xml schema生成xml

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件、文档存储等领域。XML Schema(通常缩写为XSD)则是为XML文档定义结构和数据类型的规范,它允许我们对XML文档进行更严格...

    tinyxml2解析XML文件读取数据

    - 库的主要类包括`XMLDocument`(XML文档对象)、`XMLElement`(XML元素)、`XMLText`(XML文本)、`XMLComment`(XML注释)和`XMLAttribute`(XML属性)等。 2. **解析XML文件** - 使用`XMLDocument::LoadFile()...

    XMLParser(XML解析代码 C++版)

    XMLParser是一种用于解析XML文档的C++实现,它旨在提供简单、小巧且稳定的解决方案,以处理XML数据。XML,即可扩展标记语言,是用于存储和传输数据的标准格式,广泛应用于配置文件、数据交换和文档结构化等领域。XML...

    matlab读取XML,XML转换为matlab

    XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,广泛应用于软件开发、数据存储和网络通信等领域。Matlab作为一个强大的数值计算和数据分析环境,也提供了与XML交互的功能,这主要通过XML ...

    Notepad++的XML Tools插件格式化XML文件插件

    (2) 解压Xml Tools 2.4.8 Unicode.zip,关闭Notepad++ (3) 将xmltools子文件夹下的XMLTools.dll拷贝至Notepad++的plugins子文件夹 (4) 将ext_libs子文件夹下的所有dll文件拷贝至Notepad++的根目录(与notepad++.exe...

Global site tag (gtag.js) - Google Analytics