1、简介

  XML(可扩展标记语言)语言是一种数据交换标准,用于存储数据;关键词是标记;

  XML具有以下优点:

    (1) 方便的穿过防火墙,在不同的操作系统之间通信,跨语言,跨平台。数据共享非常方便。(JSON也具有同样的问题)

    (2) 由于其自身结构特点,方便面向对象编程

    (3) XML有一系列的相关技术支持,包括文件数据验证,输出,格式转换,文档对象等。

    (4) 可扩展性好

    (5) 在传输方面有很多优势 ,格式统一,更安全一点

  XML缺点:

    (1) 传输也有缺点,传输占用带宽(与json比较)

    (2) 需要很多代码完成解析工作(与JSON比较)

2、XML语法

  XML文件文件,第一行是声明(可选):<?xml version = "1.0" encoding = "GBK"?>   或 <?xml?>

  第二行实体声明(可选):<!DOCTYPE persons
      [<!ENTITY replace "被代替的内容" >]
                          >

<!DOCTYPE persons[<!ENTITY replace SYSTEM "C:\myTestJava\AnalyticalXML\test.txt" >]
>  ,实体分为内部实体和外部实体,第一种是内部实体,第二种是外部实体。 实体相当于编程语言中的宏,之后就可以用   &text;     代替test.txt文本文件中的内容,实体的作用①代替不便于用键盘输入的字符 ②代替很多文本,避免重复输入

  之后便是各个元素之间的嵌套,语法<name></name>       或       <name />  (注意:  /前面有空格)

  元素名不可以有空格,必须以字母开头;

  根元素名是唯一的,其他元素不可以和根元素重名;其他元素名字可以重复;一个XML文档只能有一个根元素,所有的文档内容都包含在根元素中(前两行可以理解为不是文档内容);

  元素可以具有属性,语法:<name id = "20111907"  age = "23" />    注意:属性值一定要加双引号;

3、XML验证

  对XML的验证有两种方式,一种是DTD,另一种是XSD;

  DTD与XSD的对比:

    DTD使用的是非XML语法,不可扩展,支持的数据类型少;

    XSD遵循XML语法,支持多种数据类型,可以扩展;因此推荐使用XSD对XML进行验证;

  首先要有XSD文件和XML文件,然后利用Java 或者是 C#进行验证即可;

  XSD语法比较复杂,下面进行概述:

  

4、XML解析

  常用的XML解析方式有:DOM、SAX、JDOM、DOM4j

  DOM:文档对象模型,即将整个XML文档读入内存,然后按照树状的层次结构组织存储;跟XML语法比较类似;优缺点:可以随机访问,修改;但内存占用较大;

  SAX:一般称为推模型,按照流的方式顺序循环读取XML文件,根据XML语法标准,触发一系列的事件,在事件中对数据进行处理;还有一种与SAX类似的,称为STAX,也是按照流的方式读取,触发一系列的事件;两者的区别在于循环控制不同。SAX的循环控制是由SAX解析器控制的,而STAX是由应用程序控制的;优缺点:内存占用小,但是不能随机访问,不能访问之前访问过的数据(不可逆性);

  JDOM:是专门针对Java语言封装的接口和类,为开发者提供了一系列的API,缺点也是需要将整个文档读入内存,内存占用大,性能差;

  DOM4J:基于SAX的解析器,读写方便,综合性能最好的解析方式,但是可移植性差;

  

  还有一种不常用的解析方式:VTD  面向文档对象的指针,利用数组对XML文档进行描述,数组的元素是一个64位的数,记录了元素的起始位置,深度等信息,并且在读取的时候是直接以二进制的方式读进内存中的。

5、Xpath

  XPATH是记录XML元素路径的语言;一般用于选取元素  如:selectNode(XPATH)    eg:selectNode("\\*")    选取所有元素

  /    表示绝对路径,即从当前元素开始的绝对路径

  //   表示相对路径,即从当前元素开始所包含的所有元素  模糊匹配 eg:   //person     选取当前元素所包含的所有名为<person>的元素 也许会是子元素的子元素

  *    表示任何,匹配所有元素   如://*        选取当前元素包含的所有元素

  []    类似于数组的下标,如://person[1]   选取//person 所选取的所有元素中的第一个,类似于还有[last()]

  |     或,用于连接两个XPATH          如://men  |  //women    选取当前元素所包含的所有<men>  和<women>

  @    表示属性,必须放在中括号里。如://[@id]  表示选取所有具有id属性的元素;  //[@id][@age]   表示选取具有id和age两个属性的元素       //[@*]    表示选取所有具有属性的元素;

关于XML解析,仅研究了利用DOM4j技术对XML进行读写删改等;详见:

http://www.cnblogs.com/tengpan-cn/p/4832624.html

XML 从基础到精通的更多相关文章

  1. js基础到精通全面教程--JS教程

    适合阅读范围:对JavaScript一无所知-离精通只差一步之遥的人 基础知识:HTML JavaScript就这么回事1:基础知识 1 创建脚本块 1: <script language=”J ...

  2. xp-win7-win8的基础到精通教程-系统优化减肥教程-windos装mac

    是否还在使用别人封装的系统?是否还在担心下载后的系统是有病毒的?还在为 安装好新系统后,里面安装的软件全是自己不需要的?担心流氓软件绑定浏览器主页?担心 系统重装后,自己所有的编程软件都需要重新安装? ...

  3. XML的基础之一(概念和语法)

    XML的基础(概念和语法) xml html 概念 异同  XML全称为extensible markup language,即可扩展标记语言,简单理解为可预定义标签的编程语言.它与HTML(超文本标 ...

  4. 如何从Python负零基础到精通数据分析

    一.为什么学习数据分析 1.运营的尴尬:运营人需要一个硬技能每个初入行的新人都会察觉到,运营是一个似乎并没有自己的核心竞争力和安全感的工作.因为每天的工作好像都被各种琐事所围绕,而只有一个主题是永恒不 ...

  5. LINQ to XML 编程基础

    1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocumen ...

  6. xml之基础了解

    1.简介 1>什么XML语言(eXtensible Markup Language) 可扩展标记语言XML是SGML的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务.接受和 ...

  7. 零基础到精通Web渗透测试的学习路线

    小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...

  8. WEB前端需要了解的XML相关基础知识

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

  9. 零基础到精通Linux,从这篇文章开始

    2018年想做Linux运维的人应该如何学习才能快速精通Linux? Linux入门这么简单,为什么很多人学不会? 想要成为一个合格的运维工程师,到底怎么才能从零开始精通Linux? 作为一个运维小白 ...

随机推荐

  1. HttpClient的get和post方式提交数据的使用

    /** * Http工具类 */ public class HttpUtil { // 创建HttpClient对象 public static HttpClient httpClient = new ...

  2. Activity LauchMode启动模式(转载)

    转载于:http://www.cnblogs.com/plokmju/p/android_ActivityLauncherMode.html 在一个Android应用中,不可避免的会包含多个Activ ...

  3. 答辩系统bug修改记录

    1.验证码不显示 参考Could not initialize class sun.awt.X11GraphicsEnvironment解决 在catalina.sh里加上一句 “CATALINA_O ...

  4. IIS:错误: 无法提交配置更改,因为文件已在磁盘上更改

    文件名: \\?\C:\Windows\system32\inetsrv\config\applicationHost.config 错误: 无法提交配置更改,因为文件已在磁盘上更改 通过 Micro ...

  5. Linux文件系统的目录结构

    Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...

  6. mvc Controller类介绍

    1.Controller类 i.Controller必须为公开类: ii.必须以Controller结尾: iii.继承Controller基类或实现IController接口的类: iv.类中必须包 ...

  7. Entity Framework Code First ---EF Power Tool 和MySql一起使用遇到的问题

    关于如何使用EF Power Tool的介绍请看 http://www.cnblogs.com/LingzhiSun/archive/2011/05/24/EFPowerTool_1.html, 这里 ...

  8. 使用onclick跳转到其他页面。使用button跳转到指定url

    1. onclick="javascript:window.location.href='aa.htm'" 2.  onclick="location='URL'&quo ...

  9. vs远程调试

    一.远程       建立共享目录debug 二.本地 1.生成->输出->输出路径,由"bin\Debug\"改为远程目录"\\xxx\\debug&quo ...

  10. Inno Setup入门(十)——操作注册表

    有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...