XML随笔

XML的元素定义

1.标签定义又开始必须要有结束。<ap></ap>
2.标签没有内容,可以在标签内结束。<ap/>
3.标签可以嵌套,但要合理嵌套,不能交叉嵌套。<ap><ad></ad></ap>
4.一个xml中,只能有一个根标签。
5.xml会将空格和换行符都当成内容来解析。

<ap>aaa</ap>
<ap>
    aaa
<ap>

2中写法表现出来是不一样的
6.xml区分大小写

<p></p>
<P></P>

是不一样的标签
7.xml标签不能以数字和下划线(_)开头。
8.标签不能以xml(XML)开头;不能包含空格;不能包含冒号:。
9.标签可以是中文。




XML的属性定义

xml是标记性语言,所以也能有属性。
1.一个标签上可以有多个属性。
2.同一标签上的属性名不能相同。
3.属性名称和属性值之间使用“=”,属性值使用引号包起来(单双引号都可以)
4.xml的属性名称规范和元素名称规范一样



XML的注释

写法

<!--xml注释-->

1.注释不能嵌套
2.注释不能放第一行,第一行第一列必须放文档声明




XML的特殊字符

&:替代符号 &amp;
<:替代符号 &lt;
>:替代符号 &gt;
":替代符号 &quot;
':替代符号 &apos;




XML的CDATA区

可以解决多个字符需要转义的情况
使用方法

XML的PI指令

可以在xml中设置样式
写法

<?xml-stylesheet type="text/css" href="目标文件"?>

1.不能放在第一行
2.对中文命名的标签不起作用




XML的约束(DTD)

约束的定义
当创建了一个person的xml文件,只想要里面保存人的信息。但是这时候加进了一个<猫>的标签,虽然语法没有错误,但是很明显这不符合原先的设想,所以需要给xml文件一个约束
约束方法
1.dtd约束
2.schema约束

dtd约束方式
xml文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE person(根目录标签名) SYSTEM "1.dtd(dtd文件的目录)">
<person>
<name>SecondMagic</name>
<age>21</age>
</person>

dtd文件

<!ELEMENT person (name,age)>//1
<!ELEMENT name (#PCDATA)>//2
<!ELEMENT age (#PCDATA)>//3
<!--xml文件中有几个标签,dtd文件中就有几个<!ELEMENT标签>-->
<!--复杂复杂元素的写法(有子标签的标签)1-->
<!--简单院徐的写法(无子标签的标签)2,3-->



dtd的三种引入方式
1.使用外部的dtd文件

<!DOCTYPE person(根目录标签名) SYSTEM "1.dtd(dtd文件的目录)">

2.使用内部的dtd文件

<!DOCTYPE 根目录标签名 [
    <!ELEMENT person (name,age)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT AGE (#PCDATA)>
]>

3.使用外部的dtd文件(网络上的)

<!DOCTYPE 根目录标签名 SYSTEM "dtd文件名" "dtd文件的URL">




DTD定义元素

<!ELEMENT person (name,age)>    复杂元素
<!ELEMENT person (name+,age)>   name标签出现一次或者多次
<!ELEMENT person (name?,age)>   name标签出现零次或者一次
<!ELEMENT person (name*,age)>   name标签出现零次或者多次
<!ELEMENT name (#PCDATA)>       简单元素(有值时)
<!ELEMENT age EMPTY>            为空时<age></age>
<!ELEMENT age ANY>              有值和为空都可以

复杂元素中子元素
1.用逗号隔开 ,时
表示子元素的出现顺序
2.用|隔开
表示只能出现任意一个




DTD定义属性

语法格式

<!ATTLIST 元素名称
    属性名称 属性类型 属性约束
>

属性类型
CDATA:字符串
枚举:(aa|bb|cc)
ID:值只能以字母或者下划线开头

属性的约束
#RUQUIRED:属性必须存在
#MPLIED:该属性可有可无
#FIXED:表示属性的取值为一个固定值。使用时直接在后面加上固定值




DTD定义实体

<!ENTITY TEXT "hello world">
<name>&TEXT;</name>    使用实体方式,显示hello world




XML的解析

xml的解析方式
1.dom
2.sax

dom根据xml的层级结构,将其解析为一棵树,把每部分都封装成对象
使用dom方式解析文件时,如果文件过大,则会造成内存溢出
dom优点:便于进行增删改操作

sax解析采用事件驱动,边读边解析,从上到下,一行一行的解析,解析到一个对象,就返回该对象的名称
sax解析不会造成内存溢出,还可以实现查询,但是不能进行增删改操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值