XML

6 篇文章 0 订阅

1、XML

 

什么是 XML?

XML 指可扩展标记语言EXtensible Markup Language)

XML被设计用来传输和存储数据

XML以标签的形式存储数据

XML可以用来存储一对多的数据用来当做配置文件存储数据

XML文件组成部分文档声明元素元素的属性注释、CDATA特殊字符处理指令(PI:Processing Instruction)

 

拥有正确语法的XML被称为形式良好XML。

通过某个DTD进行了验证的XML合法XML。

W3C 支持一种基于XMLDTD代替者XML Schema。

一个"形式良好"XML文档会遵循以下规则

*XML文档必须有根元素

*XML文档必须有关闭标签

*XML标签对大小写敏感

*XML元素必须被正确嵌套

*XML属性必须加引号

 

非法的XML字符必须被替换为实体引用(entity reference)

 

<

<

小于

&gt;

>

大于

&amp;

&

&apos

'

单引号

&quot;

"

双引号

 

PS:严格上讲 XML 中仅有字符 "<""&" 是非法的

如果文本中需要大量用到"<""&" ,那么可以将文本定义为一个CDATA区段因为CDATA 内部的所有东西都会被解析器忽略

CDATA 区段开始于 "<![CDATA["结束于 "]]>"。(CDATA区段内不能包含字符串"]]>")

 

2、XML约束DTD

DTD(文档类型定义的作用是定义 XML 文档的合法构建模块

 

①DTD引入声明格式

包含在 XML 源文件中声明:<!DOCTYPE 根元素 [元素声明]>

作为外部引用文档声明:<!DOCTYPE 根元素 SYSTEM "文件名">

 

DTD文档中使用ELEMENT关键字来声明一个XML元素:<!ELEMENT 元素名称 使用规则>

使用规则

(#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)

EMPTY:用于指示元素的主体为空比如<br/>

ANY:用于指示元素的主体内容为任意类型

(子元素):指示元素中包含的子元素

如果子元素用逗号分开说明必须按照声明顺序去编写XML文档

<!ELEMENT book (name,author,price)>

如果子元素用"|"分开说明任选其一

<!ELEMENT book (name|author|price)>

+、*、?来表示元素出现的次数

不加+*?:表示必须出现一次

+:表示至少出现一次或多次

*:表示零次一次或多次

?:表示零次或一次

 

 DTD 属性通过ATTLIST来进行声明<!ATTLIST 元素名称 属性名称 属性类型 >

 

属性类型

描述

CDATA

普通的文本字符串

(红色|黄色|绿色)

枚举

ID

唯一的id

NOTATION

符号的名称

xml:

预定义的XML

 

 

描述

直接值

属性的默认值

#REQUIRED

属性值必须出现

#IMPLIED

属性值可有可无

#FIXED value

属性的取值为一个固定值

 

3、XML约束Schema

XML Schema 是基于 XML  DTD 替代者

Schema约束自身就是一个XML文件但它的扩展名通常为.xsd

一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档

XML Schema名称空间支持得非常好

理解:

名称空间: 相当于package

约束文档: 编写好的Person 

实例文档: 通过Person类创建对象

 

约束文档

<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema"

        //标准的名称空间

targetNamespace="http://www.example.org/email">

        //将该schema文档绑定到http://www.example.org/email名称空间

 <element name="email">

  <complexType>

   <sequence>

    <element name="from" type="string"/>

    <element name="to" type="string"/>

    <element name="subject" type="string"/>

    <element name="body" type="string" />  

   </sequence>

  </complexType>

 </element>

</schema>

 

 

 

实例文档

<?xml version="1.0" encoding="UTF-8"?>

<p:email xmlns:p="http://www.example.org/email"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.example.org/email XMLSchema.xsd ">

  <from>赵敏</from>

  <to>张无忌</to>

  <subject>提醒</subject>

  <body>看电影</body>

</p:email>

 

 

 

4、XML的解析

①Dom解析直接把整个xml文件加载进内存如果xml过大可能内存溢出

②SAX解析一次一个节点(节点: 标签属性文本甚至是换行都称之为节点)的解析如果要获取指定节点比较耗时但是不会出现内存溢出的情况

使用Dom4j来解析xml文件

 

<?xml version="1.0" encoding="UTF-8"?>

<公司>

  <腾讯 yingyee="2000亿">

    <leader age="25">

      <name>老化疼</name>

    </leader>

  </腾讯>  

  <百度 yingyee="1300亿">

    <leader age="35">

      <name>李彦宏</name>

    </leader>

  </百度>  

  <阿里 yingyee="1200亿">

    <leader age="45">

      <name>马云</name>

    </leader>

  </阿里>  

  <华为 yingyee="1000亿">

    <leader age="65">

      <name>任性</name>

    </leader>

  </华为>

</公司>

 











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值