夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> web前端技术
XML入门教程:分析XML
夜鹰教程网 来源:www.yyjcw.com 日期:2016-10-25 23:06:44
分析XML文档可通过程序来做,分析器有两大类,一种是事件驱动的,一种是基于树模型的。

分析XML文档可通过程序来做,分析器有两大类,一种是事件驱动的,一种是基于树模型的。

  • 使用事件驱动的分析器时,每遇到一个元素就会触发一个事件,由事件处理器进行处理。事件分析器按顺序读取XML文档,而不把整个文档读入内存,所以处理速度很快。但缺点是由于要从头到尾读取XML文档,因此无法在XML文档中移动位置。事件驱动分析器适合处理其它地方使用的XML数据,如转换成HTML文档或从文件中读取数据并插入数据库中。它的优点有:

    • 文件搜索,从XML文档中搜索需要的标志或数据;

    • 格式转换,如转换成HTML。任何需将原始XML转换成另一种格式的工作都最好使用事件驱动分析器来完成,因为它可动态将信息转换成新格式。

    • 少量修改,你可用事件驱动分析器读取和重新生成XML。在分析过程中,可以改变少量的单语、字符数据内容或重新构造XML。事件驱动分析器特别适合整理和重新格式化XML文档。

    • 简单验证,由于整个文档不在内存中,所以无法进行完整验证,但可检查拼写错误和一般良构XML文档之类的简单问题;

    • 建立内部结构,可以使用事件驱动分析器建立XML文档的复杂内部表示,如基于树的接口使用的树式结构。

       
    事件驱动分析器不能在XML文档间交叉引用文档内容,但它使用简单,速度快。
  • 基于树的分析器把整个XML文档读入内存,并生成树状结构。分析器可随机访问树中的任意节点,并能修改树结构和内容。

1. 分析器工具

现有的分析器种类有上百种,但常用的是两个标准的工具库,一个是XML简单API(SAX,Simple API for XML)和文档对象模型(DOC,Document Object Model)。SAX是事件驱动分析器的标准,而DOM是基于树的分析器标准。另外,Expat虽然不是标准,但它是脚本语言中处理XML时最常用的分析器。Expat由James Clark编写,是事件驱动分析器。

本文由网页教学网(http://www.webjx.com)整理发布!转载请注明出处,谢谢!

2. Unicode

计算机并不能正真理解文本内容,它无法识别诸如a,b,c这类的字母,更不用说中文了。计算机所能理解的只有数字,如60,80等。字符集(character set)规定了字母到数字的映射关系,如65代表大写字母A。65称为码点(code point),字符编码(character encoding)决定码点如何用字节表示。是用多了节还是单字节,高字节位表示什么,低字节位表示什么。

不同国家使用不同的语言,不同程序使用不同的编码规范,在进行世界范围内的数据交换就要统一表示数据的字符编码规范。传统的ASCII字符集只定义了127个字符,其中前31个是控制符。127位之后的字符随平台不同而不同。大多数平台只能表示前127位,单字节(8位),使得字符集中最多只能提供256个字符。这些标准字符称为罗马或拉丁字符集,用ASCII来表示中文、日文是远远不够的。

为了解决字符集问题,出现了Unicode字符集。它可用多字节格式编码字符,目前标准允许2字节字符,支持65536个不同字符。标准的Unicode字符集为Latin-1(或ISO-8859-1)。有关Unicode的介绍可访问Unicode的官方网站:http://www.unicode.org

Unicode字符集为字符分配码点,即编号。这些编号可以用多种模式编码,如UCS-2、UCS-4、UTF-8、UTF-16。

  • UCS-2,也叫ISO-10646-UCS-2。每个字符用一个0~65535之间的两个字节的无符号整数表示。如A的Unicode码点为65,用两个字节00和41(十六进制)表示。B的Unicode码点为66,用两个字节00和42表示。UCS-2有两种形式:高字节(#x0041)在前和低字节(#x4100)在前。为区发高低位不同表示形式,采用UCS-2编码文档通常以Unicode字符#xFEFF(零宽度无间断空格)开头,一般称为字节顺序标记(byte order mark)。这个字符是不可见的。如果两个字节交换位置,得到的字符#xFFFE实际是不存在的。因此中通过查看UCS-2文档的前两个字符是#xFEFF还是#xFFFE,就可确定该文档是否是高字节在前。UCS-2的缺点:如果文本字符主要是拉丁文,由于采用两个字节,字符集编码是单字节字符编码的两倍;UCS-2不能与ASCII向前或向后兼容,用于单字节字符集的工具常常不适用于处理UCS-2编码文件。

  • UTF-8是一种可这长度的Unicode编码。0~127为ASCII码字符集,与ASCII编码完全兼容,每个字符采用一个字节编码。UTF-8用两个字节表示128~2047,该范围覆盖了最常见的非表意字母。其余的字符,主要来自汉语、日语和韩语,每个都用3个字节表示。如果Unicode的码点超过65535个字符,那么这些字符就会用4个字节编码。对于以拉丁文为主的文件,使用UTF-8比UCS-2可减少一半的文件大小。对于汉语、日语和韩语的文件,其大小会增加百分之五十。对于其它语言,文件大小相差不大。UTF-8是最常用的Unicode编码方式。

在Unicode流行以前,出现了一系列处理特定语言的单字节字符集,ISO将14种这样的字符集标准化成ISO 8859标准,分别是ISO-8859-1~14。ISO-8859-15是ISO-8859-1的修订版本。这些字符集统称ISO字符集。

Cp1252是依赖于Windows平台的一种编码,是Windows的缺省字符集。该种编码不支持跨平台特性,尽量不要使用。

MacRoman是Mac OS使用的一种非标准、单字节编码。在非Mac平台下使用也会有问题,尽量不要使用。

本文由网页教学网(http://www.webjx.com)整理发布!转载请注明出处,谢谢!

在XML文档中,如果需输入编辑器不支持的字符,我们可用字符引用的方式,以十进制或十六进制给出它所代表的Unicode字符编号,如њ(十进制)或者&#x45A(十六进制)。字符引用可用于元素内容、属性和注释,不能用于元素名和属性名、处理指令或XML关键字。如果有一些字符需经常使用,则我们可为这些字符定义实体,这样,在文档中就可方便地引用该实体了。专门定义字符实体的DTD我们可独立出来,形成以.ent为后缀的外部DTD。在需要时使用外部参数实体引用将这些定义引入文档的DTD中。

XHTML 1.0 DTD包含有三个有用的字符引用实体可在文档中使用。

  • Latin-1字符,http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent

    ISO-8859-1中自160以上的非ASCII码字符。

  • 特殊字符,http://www.w3.org/TR/xhtml/DTD/xhtml-special.ent

    ISO-8859-2中不在Latin-1中的字母。

  • 标点符号,http://www.w3.org/TR/xhtml-symbol.ent

    希腊字母表(不包含带重音的字符)和各种标点符号、数学运算符及其他数学中常用的符号。

在XML文档中可以使用xml:lang属性规定元素内容采用的语言。这样就可在一篇文档中同时使用多种语言,这是XML跨平台和跨语言的重要特性之一。如:xml:lang="CN-CHN"。语言代码是一个两个字母的语言代码,语言代码后还可跟一个子代码,语言代码可在这里找到http://ftp.ics.uci.edu/pub/ietf/http/related/iso3166.txt。下面是xml:lang属性声明的示例:

<!ELEMENT test (#PCDATA)>
<!ATTLIST test xml:lang NMTOKEN #IMPLIED>

由于所有语言代码都是有效的XML名称标记,所以使用NMTOKEN类型。

复制链接 网友评论 收藏本文 关闭此页
上一条: XML入门教程:文档类型声明  下一条: XML教程:XPath归纳及总结
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
XML Schema学习笔记(1)
XML Schema学习笔记(2)
C#对XML文档的操作
ASP操作XMLDOM
XML入门教程:分析XML
百度新闻开放协议XML文档制作方法…
XSL 语言
用RSS做五分钟一自动更新的网站
XML入门教程:文档类型声明
XML教程:通过一个例子来学习XML的…
XML节点相关知识
把XML文件绑定到列表控件
XML+XSLT+CSS+JQuery+WebService组…
XHTML头部Doctype声明必不可少!
历数Firefox2.0对XML处理的改进
  最近更新
金三银四跳槽季—前端面试汇总
Sublime常用插件汇总(全)
大前端学习路线
如何克服前端学习进步慢的问题
web前端常见基础问题
阿里前端面试经历(转载)
Web前端需要掌握技术汇总(转)
ESLint详解-让你的代码更加规范
通过userAgent适配 PC端和移动端网…
js操作DOM中需要注意的问题
Promise编程简介
Emmet语法和实例
新手所必须掌握的前端知识汇总
移动端视口的相关概念及其适配方案…
上传图片立即预览

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3