XML学习1

1.XML简介

(1)Extensible Markup Language: 可扩展标记型语言

标记型语言:html也是标记型语言,也是使用标签来操作

可扩展:html的标签固定。XML可以自己定义标签,可以写中文的

(2)XML用途:html是用于显示数据,XML也可以用于显示数据(不是主要功能),XML主要用于存储数据

(3)XML 由W3C发布的技术,有1.0 和1.1,用的1.0版本,1.1不能向下兼容

(4)XML的应用:

A.不同的系统之间传输数据

*qq之间的数据传输

B.用来表示生活中有关系的数据

C.经常用在文件配置

*修改数据库的信息,不用修改源代码,修改配置文件就可以


2.XML的语法:

(1)XML的文档声明:

在创建.XML的文件后,第一行第一列必须是文档声明:<?xml version="1.0" encoding="gbk" ?>

encoding:xml的编码,有gbk , utf-8 , iso8895-1(不包含中文)//注意保存的时候,编码,和打开的时候的是一样的,不然会出现乱码

standalone:是否需要依赖其他文件 ,yes/no

(2)定义元素,标签:

标签有开始就必须有结束;但是标签没有内容就可以在标签内结束<aa/>;

一个xml,只能且仅有一个跟标签;

xml会把空格,换行都当成内容来解析

xml命名规则:xml区分大小写,xml标签不能以数字和下划线开头,且不能以xml,XML,Xml来开头,标签不能包含空格和冒号

(3)定义属性:一个标签上可以有多个属性,但是属性名称不能相同,属性名称和属性值之间使用=,属性值使用引号包起来(可以是单引号,双引号),

xml属性的命名规则和元素的命名规则一样。

(4)注释:<!--xml的注释-->,不能嵌套。

(5)特殊字符:如果想要显示>或者<需要,转义字符  <  &lt  ; > &gt;

(6)CDATA区(了解):可以解决多个转义字符频繁转化的问题,格式:<![CDATA[  内容  ]]>

(7)PI指令(了解):用于设置XML的样式,格式:<?xml-stylesheel type="text/css" href="css的路径"?>,且对中文标签不起作用。

不过该属性用的很少,XML主要用于存储数据,不作显示数据的作用

3.xml的约束:dtd约束,schema约束(了解)

4.dtd入门:

创建后缀名.dtd,看有多少个元素就写几个</!ELEMENT>

判断元素是简单元素还是复杂元素:

-复杂:有子元素的元素<!ELEMENT 元素名称 (子元素)>

-简单:没有子元素<!ELEMENT 元素名称 (#PCDATA)>

需要在xml中引用dtd文件

-在xml文件引入dtd文件<!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">

5.dtd三种引入方式

(1)引入外部的dtd文件<!DOCTPYE 根元素名称 SYSTEM "dtd文件路径">

(2)使用内部的dtd文件

<!DOCTYPE 根元素的名称 [

<!ELEMENT person (name,age)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>

]>

(3)使用外部,网络上的dtd文件 框架struts2 使用配置文件 使用外部的dtd文件。

6.使用dtd定义元素:

语法:<!ELEMENT name (#PCDATA)>

***(#PCDATA):约束name 是字符串类型

***EMPTY :约束元素为空

***ANY: 任意类型


复杂元素:<!ELEMENT 元素名称(子元素)>

<!ELEMENT person (name,age)>



**子元素只能出现一次,如name


表示子元素出现的次数:<!ELEMENT person (name+,age)>

+:表示一次或者多次

?:表示零次或者一次

*:表示零次或者多次


子元素用逗号隔开,代表子元素出现的顺序

子元素用|隔开,出现这些子元素的其中一个

7.dtd定义属性

* 语法:<!ATTLIST 元素名称

属性名称 属性类型 属性的约束

>

*属性类型:

-CDATA:: 字符串

<!ATTLIST birthday

ID1 CDATA  #REQUIRED>

-枚举:只能在这些值取,且只能取一个

<!ATTLIST age

ID2 (AA|BB|CC)  #REQUIRED>

-ID: 值只能是字母或者下划线开头

<!ATTLIST name

ID3 ID   #REQUIRED>

*属性的约束:

-#REQUIRED:属性必须存在

-#IMPLIED :实行可有可无

-#FIXED:表示属性的值必须是这个固定值 #FIXED "ABC"

-#直接值:<!ATTLIST name

ID3 CDTAT  "WWW">

不写属性,试用直接值,写了属性,使用设置那个值


8.DTD引用实体:在DTD中定义,XML中使用

语法:<!ENTITY实体名称 "实体内容">

引用方式:(XML中使用):&实体名称

如:DTD定义:<!ENTITY copyright  "XXX">

XML引用:&copyright


9.XML解析方式两种:dom和xax

sax解析过程:从上到下,一行一行解析,解析到某一个对象,把对象名称返回。

使用sax方式不会造成内存溢出,实现查询;但是不能实现增删改操作


dom解析过程:根据xml层级结构,内存直接分配一个树形结构。使用dom方式解析xml时候,如果文件过大,会内存溢出;但是又很方便实现增删改操作。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obession

觉得有用可以打赏咖啡一杯~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值