xml

xml简介

XML是一种可扩展标记语言 (Extensible Markup Language, XML)。是一种可扩展的标记语言,XML重在数据交换,用于不同平台或者应用程序之间交换数据,存储数据。

版本:XML1.0版本(使用)      XML1.1版本(不向下兼容)

1:XML是纯文本标记

XML文件是纯文本的形式,正是由于这种简单的格式,才让所有能处理纯文本的程序都能处理XML文件。这样对于数据交换和传输时至关重要的,也提高了它的兼容性和与平台无关性。

2:XML可以随意的定义自己的标签

你可以以任意文字定义标签,只要有开始符号和结束符号,只要符合XML的树形结构就可以,甚至可以使用中文。

3:与HTML的区别

XML重在存储数据,html重在显示数据。它们都是标记语言,但是html的标记是死的。xml的标记是活的。   如:新浪天气预报接口

4:XML是没有行为的

这句话的意思就是XML只能放在文件里面等着别人去读取,写入。自己本身没有执行的能力。

5.作为框架的配置文件(Struts2 Spring Hibernate)

xml语法

文档声明(重点)

* 文档声明:声明当前的这个文件就是一个XML文件。必须要出现的。
* 写法: <?xml version="1.0" ?>
* 需要出现在xml文档中的第一行第一列的位置。
* 属性:
* version="1.0" XML文件的版本
* encoding="UTF-8" 代表XML打开文件时所采用编码
* standalone="yes/no"(可写也可以不写) XML文件是否独立的,如果不是独立的,就可以引入外部文件。
* 产生乱码(重点)
* 产生乱码:在保存文件时,和打开文件时所采用的编码不一致。
* 解决办法:只需要保存文件时和打开文件所采用编码一致就ok
* 注意:MyEclipse不会有乱码的问题。

定义元素

* 必须有开始标签结束标签。每个节点开始结束必须都对应,缺一不可。xml是一个树结构,只能包含一个根节点。
* 包含标签主体内容 <abc>内容</abc>
* 不包含标签主体 <abc/>
* 标签必须要合理的嵌套
与HTML的注释是相同   <!-- 也是XML的注释 -->
注释也不可以嵌套。

* XML的属性命名规范与元素命名规范。
* 元素定义规范
* 区分大小写 <P><p> 代表不同的标签
* 不能以数字和中划线开头
* 不能以XML(Xml XML)开头
* 不能包含空格和冒号

定义属性

* 自定义的属性    <abc xyz="" >
* 元素上不能有相同名称的属性 错误的:<abc xyz="" xyz="" >
* XML的属性值必须使用引号引起来(单引号或者双引号)

转义字符

* <     &lt;
* > &gt;
* & &amp;
* " &quot;
* ' &apos;

CDATA区

* 作用:使用CDATA区中间的内容解析成文本内容(字符串)。
* 语法: <![CDATA[ 内容 ]]>

总结XML的语法

* XML必须有开始和结束标签。
* XML区分大小写
* XML必须正确的嵌套
* XML只能有一个根节点,必须要有的。
* XML的属性的值需要使用引号(双引号或者单引号)
* 转义字符需要进行转义,或者使用CDATA区括起来。


XML的约束

* 格式良好的XML:遵循XML的语法结构。
* 有效的XML:符合XML的约束的XML文档。 

两种方式

DTD约束 schema约束

一.DTD约束

DTD约束开发的步骤

* 1:先编写一个XML的文档(被约束)。
* 2:编写DTD的约束文档(约束)。
* 3:创建一个DTD文档。
* 3.1 定义元素 语法:<!ELEMENT 元素名称 元素类型 > XML文档中可以出现的元素
* 3.2 判断哪些是复杂的元素,哪些是简单元素
* 3.3 如果是简单元素(只包含文本内容) 元素类型写法:(#PCDATA)
* 3.4 如果是复杂元素(下边包含子节点) 元素类型写法:(子节点1,子节点2...)

DTD与XML结合一起

在XML的文件中引入DTD的约束文件。

* 直接写在XML文件的上面
* <!DOCTYPE 根节点 [ DTD文件的内容 ] >
* 定义外部的DTD文件,引入外部的本地的DTD文件
* <!DOCTYPE 根节点 SYSTEM "DTD文件的地址">
* 引入外部的DTD文件,引入的网络上的DTD文件
* <!DOCTYPE 根节点 PUBLIC "DTD文件的名称" "DTD文件的地址">

DTD的语法

元素定义

* 写法:<!ELEMENT 元素名称 元素类型>
* 元素类型:
* (#PCDATA) 可解析的字符数据(字符串)
* EMPTY 空(没有标签主体)
* ANY 任意类型
* (子节点1,子节点2...) 当前的元素是复杂的元素,下面包含子节点
* 子节点之间关系
* 子节点与子节点出现顺序的关系
* , :代表子节点按着顺序出现
* | :子节点出现只能出现一个
* 子节点出现的数量的关系
* + :子节点可以出现1次或多次
* * :子节点可以出现0次或多次(任意次)
* ? :子节点可以出现0次或1次

属性定义

* 写法:
<!ATTLIST 元素名称
属性名称 属性类型 属性约束
属性名称 属性类型 属性约束
>
* 属性类型
* CDATA 字符数据(字符串)
* 枚举:没有关键字,写法(值1|值2|值3),只能从枚举中选择其中一个值
* ID:代表是属性是唯一的,值就不能相同了。值也不能是数字 * 属性约束
* #REQUIRED 属性是必须要出现的
* #IMPLIED 属性的出现是可选的
* #FIXED 固定值 -- #FIXED "固定值"
* 默认值 提供默认值 ""

实体定义(了解)

* 写法:   <!ENTITY 别名 "值">        定义了一个实体
* 作用:需要在XML的文件中需要引入实体,就会在XML文档中显示别名所对应的值
* 引入的语法:&别名;

二.schema约束

* schema约束为了DTD的局限性。
* schema约束和DTD的区别(面试题)
* XML schema约束符号XML的语法规则
* DOM或者SAX解析的方式很容易解析schema文档
* schema约束对名称空间支持的非常好的
* schema约束文档比DTD支持更多的数据类型,支持自定义数据类型。

schema约束文档快速入门

1:先创建schema的约束文档
* 先引入W3C的名称空间,在<schema>根节点上,使用xmlns="W3C的名称空间"
* xmlns xml namespace
* xmlns="http://www.w3.org/2001/XMLSchema"
2 定义元素,想约束XML的元素
* <element name="元素名称" >
3 判断是否是复杂还是简单
* 如果是简单元素 使用type的属性设置元素的数据类型
* 如果是复杂元素
* 声明我是复杂元素 <complexType>
* 声明子节点出现的关系 <sequence>
4 给自己定义的schema约束起名字(名称空间的空间)
* targetNamespace="名字需要唯一的" 一般情况下使用域名。
5 elementFormDefault:决定xml文件里面的书写格式
* unqualified :质量不好的
* qualified :质量好的(记住) 二:在XML的文档中引入schema的约束文档
* 目的:引入自己定义的schema约束文档
* 需要先引入W3C的名称空间:执行当前的XML文档是一个实例文档。
* xmlns="http://www.w3.org/2001/XMLSchema-instance" 一个实例文档
* xmlns="http://www.w3.org/2001/XMLSchema" 一个约束文档
* 引入自己定义的schema约束
* xmlns="http://www.itcast.cn/hm14"
* 遇到了问题:一个元素标签上,有相同名称的属性了。
* 解决问题:起别名(前缀名)。
* 元素的标签出现的概率小的名称空间上起别名就ok了。
* 引入自己定义的schema文件的地址
* xsi:schemaLocation="schema约束文档的名称 文档的地址"

名称空间的概念

* 名称空间:自己定义schema文档,需要使用名称空间起名字。
* 在XML文档中引入了名称空间,因为XML文档可以引入多个名称空间,只有一个默认的名称空间。
* 理解相当java中包的结构。 <?xml version="1.0" encoding="UTF-8"?>
<!-- 数据文件 引用多个Schema -->
<company xmlns = "http://www.example.org/company"
xmlns:dept="http://www.example.org/department"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/company company.xsd http://www.example.org/department department.xsd"
>
<employee age="30">
<!-- 部门名称 -->
<dept:name>人力资源部</dept:name>
<!-- 员工名称 -->
<name salary="3000.00">王晓晓</name>
</employee>
</company>

详解xml的更多相关文章

  1. Log4j2详解——XML配置详解

    Log4j2详解--XML配置详解 找到了个很详细的文章链接 https://www.jianshu.com/p/bfc182ee33db

  2. Spring之AOP原理、代码、使用详解(XML配置方式)

    Spring 的两大核心,一是IOC,另一个是AOP,本博客从原理.AOP代码以及AOP使用三个方向来讲AOP.先给出一张AOP相关的结构图,可以放大查看. 一.Spring AOP 接口设计 1.P ...

  3. 详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案

    主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxe ...

  4. python模块详解 XML

    XML模块 XML是实现不同语言或程序之间进行数据交换的协议,和json一样. XML格式: <?xml version="1.0" encoding="UTF-8 ...

  5. [转] pom.xml 配置详解

    From:http://blog.csdn.net/ithomer/article/details/9332071 Maven是一个项目管理工具,通过pom.xml来实现. pom.xml 配置文件 ...

  6. Log4j配置详解之log4j.xml

    Log4j配置详解之log4j.xml Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息. ...

  7. hadoop集群配置方法---mapreduce应用:xml解析+wordcount详解---yarn配置项解析

    注:以下链接均为近期hadoop集群搭建及mapreduce应用开发查找到的资料.使用hadoop2.6.0,其中hadoop集群配置过程下面的文章都有部分参考. hadoop集群配置方法: ---- ...

  8. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  9. 动画_ _ Android应用开发之所有动画使用详解

    转载: http://blog.csdn.net/yanbober/article/details/46481171 题外话:有段时间没有更新博客了,这篇文章也是之前写了一半一直放在草稿箱,今天抽空把 ...

随机推荐

  1. Pascal游戏 大富翁MUD

    大富翁MUD Pascal源码 Chaobs改编自百度网友作品 此源码非Chaobs原创,但转载时请仍注明出处. 估计90后以后就没有孩子知道MUD了. program wxtw; uses crt; ...

  2. python学习笔记十五:日期时间处理笔记

    #-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...

  3. 一个初学者的辛酸路程-前端cs

    一.主要内容 继续CSS 二.CSS 第一个: postion 网页有一类就是返回顶部,一直在右下角,还有打开一个网页顶部有个菜单,滚动滑轮,顶部永远在上面. position:  fiexd  == ...

  4. Oracle 学习----:Oracle删除表时报错:表或视图不存在

    表明明存在,但是删除时却报错:表或视图不存在. 可能的原因之一是表名包含了小写,可以用双引号包含表名通过drop命令来删除, 如下所示: drop table "tmp_ST" ; ...

  5. 课时46:魔法方法:描述符(property的原理)

    目录: 一.描述符(property的原理) 二.课时46课后习题及答案 ********************************** 一.描述符(property的原理) ********* ...

  6. 云效(阿里云)流水线 + nginx + uWsgi + flask + python3 基础环境搭建 --备忘

    一.开发环境搭建 1.安装python3 yum -y groupinstall "Development tools" yum -y install zlib-devel bzi ...

  7. Beta

    目录 过去存在的问题 任务分工 规范 后端总结 卉卉 家灿 前端总结 绪佩 青元 恺琳 宇恒 丹丹 算法&API接口 家伟 鸿杰 一好 文档&博客撰写 政演 产品功能 我们已经坐了哪些 ...

  8. 湘潭邀请赛 2018 E From Tree to Graph

    题意: 给出一棵树以及m,a,b,x0,y0.之后加m条边{(x1,LCA(x1,y1)),(x2,LCA(x2,y2))...(xm,LCA(xm,ym))}.定义z = f(0)^f(1)^... ...

  9. 绑定域名到 GitHub Pages

    简介 我在阿里云上注册了一个新域名:yuanzb.com,我已经在GitHub Pages上建立了自己的博客:http://yuanzb.github.io/yuanzb/.现在我希望将yuanzb. ...

  10. 1031. 高一学堂 (at)

    题目描述 在美丽的中山纪念中学里面,有一座高一学堂.所谓山不在高,有仙则名:水不在深,有龙则灵.高一学堂,因为有了yxr,就成了现在这个样子 = =. 由于yxr的语言太过雷人,每次他发微往往都会有一 ...