`
qepipnu
  • 浏览: 75058 次
  • 性别: 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  
学习了,但要短点,精简点,就更好。

相关推荐

    xml2axml反编译AndroidManafest文件

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

    maven的本地仓库配置文件settings.xml和项目中文件pom.xml.zip

    一、Idea关联的maven本地仓库配置文件settings.xml (1)必须使用默认文件名 D:\developsoft\javaweb\commonPlugins\maven\apache-maven-3.8.1_first\conf\settings.xml 二、Myeclipse关联的maven本地仓库配置文件...

    xml加密解密工具XMLEncryption

    xml加密(XML Encryption)是w3c加密xml的标准。这个加密过程包括加密xml文档的元素及其子元素,通过加密,xml的初始内容将被替换,但其xml格式仍然被完好的保留。 介绍 我们有3个加密xml的方法 1、仅仅使用对称...

    Tinyxml 源代码(VC6 & VS2005)

    TinyXML是一个简单小巧,可以很容易集成到其它程序中的C++ XML解析器。 它能做些什么 简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。 XML的意思是“可扩展标记语言...

    XML与XMLSchema

    XML发展历史概述 XML文档组成元素 XML Schema组成元素 XML相关API

    vb6XML读写

    vb中读写XML文件实例Dim XMLDoc As DOMDocument Dim root As IXMLDOMNode Dim xlst As IXMLDOMNodeList, xlst1 As IXMLDOMNodeList Dim xn As IXMLDOMNode Dim xnf As IXMLDOMNode Dim xe As IXMLDOMElement Set ...

    Android APK xml 批量解密工具

    android开发中有时会想研究借鉴一下设计思路和UI风格,但解压apk包后 layout文件夹下xml文件一般都是加密的。在网上找到了一个工具,可以完美地解密xml文件,但这个工具的使用方法是:调cmd 然后...

    QT中读取XML文件三种方式 的实例

    XML(eXtensible Markup Language)是一种通用的文本格式,被广泛运用于数据交换和数据存储(虽然近年来 JSON 盛行,大有取代 XML 的趋势,但是对于一些已有系统和架构,比如 WebService,由于历史原因,仍旧会继续...

    纯C语言解析xml字符串

    纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...

    Altova XMLSpy2013简体中文版破解补丁

    Altova XMLSpy是一款业界最畅销的XML编辑器,这款XMLSpy2013重点新增了智能修复、Java应用程序无缝集成、集成外部程序等新功能,而且本站提供的是中文破解版,能给用户带来极大的方便。 Altova XMLSpy主要用于建模,...

    xml和java bean互相转换工具包(简单易用)

    xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...

    andxml xml解密工具

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

    opencv+python 人脸识别的xml文件

    haarcascade_eye.xml haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalcatface.xml haarcascade_frontalcatface_extended.xml haarcascade_frontalface_alt.xml haarcascade_frontalface_alt_tree.xml haar...

    XML - 实验(2) -- Schema

    《XML》实验任务书 【2】 XML Schema [实验目的] 1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素...

    让开源项目TinyXml支持Unicode(wchar_t)

    开源项目TinyXml项目所涉及的字符编码说明如下: 1. TinyXml函数调用接口的字符型参数,仅支持`窄字符`格式(char*),不兼容`宽字符`格式(wchar_t*)。 2. TinyXml函数提供的Xml内容解析功能,仅支持以ANSI编码和UTF...

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xml

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...

    tinyxml与tinyxml2

    tinyxml与tinyxml2两个版本的源码,操作xml很方便,解压可以直接使用.

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

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

    动态生成Rss文件 Xml操作 Xml文件的修改

    动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...

    Maven pom.xml与settings.xml详解

    主要介绍了Maven pom.xml与settings.xml详解的相关资料,这里对pom.xml与setting.xml详细的研究说明,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics