XML

xml:可扩展标记语言,是一种标记语言

xml没有固定的标签,所有的标签都可以自己定义

作用:
       数据存储
       数据交换
       数据配置

1、使用DTD

(1)内部DTD定义:

1、内部DTD的定义,语法如下

<!DOCTYPE 根元素 [元素声明]>

2、元素声明语法:

<!ELEMENT 元素名 (子元素[,子元素...])>

3、数量词

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

2)?:表示出现0次或1次

3)*:表示出现任意次

4、属性声明语法:

1)属性类型:CDATA,表示字符数据(character data)

2)默认值:

#REQUIRED,表示必须出现

#IMPIED,表是不是必须的

5、带DTD的完整xml代码:

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

<!-- 声明内部DTD -->

<!DOCTYPE scores [
        <!ELEMENT scores (student+)>
        <!ELEMENT student (name,course,score)>
        <!ATTLIST student id CDATA #REQUIRED>   <!-- student 的id属性为字符串,必须有 -->
        <!ELEMENT name (#PCDATA)>      <!-- #PCDATA只能写文本 -->
        <!ELEMENT course (#PCDATA)>
        <!ELEMENT score (#PCDADA)>
        ]>
<scores>
    <student id="1">
        <name>张三</name>
        <course>java</course>
        <score>90</score>
    </student>
    <student id="2">
        <name>李四</name>
        <course>sql</course>
        <score>96</score>
    </student>
</scores>

(2)外部DTD定义

1、创建一个独立的dtd文件

<!-- 声明外部DTD -->
<!DOCTYPE scores [
        <!ELEMENT scores (student+)>
        <!ELEMENT student (name,course,score)>
        <!ATTLIST student id CDATA #REQUIRED>   <!-- student 的id属性为字符串,必须有 -->
        <!ELEMENT name (#PCDATA)>      <!-- #PCDATA只能写文本 -->
        <!ELEMENT course (#PCDATA)>
        <!ELEMENT score (#PCDADA)>
        ]>


2、在xml中引入外部DTD文件

<?xml version="1.0" encoding="utf-8" ?>
<!-- 引入外部DTD文件 -->
<!DOCTYPE scores SYSTEM "student.dtd">
<scores>
    <student id="1">
        <name>张三</name>
        <course>java</course>
        <score>90</score>
    </student>
    <student id="2">
        <name>李四</name>
        <course>sql</course>
        <score>96</score>
    </student>
</scores>


解析:操作xml文档,将文档中的数据读取到内存中

2、操作xml文档:

1、读取:将文档中的数据读取到内存中

2、写入:将内存中的数据保存到xml文档中。持久化的存储

解析xml的的方式:

1、DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树

优点:操作方便,可以对文档进行CRUD的所有操作

缺点:占内存

2、SAX:逐行读取,基于事件驱动的

优点:不占内存

缺点:只能读取,不能增删改

3、JDOM:比DOM更快,仅使用具体类而不使用接口

4、DOM4J:Java XML API ,JDOM的升级版

使用接口而不是类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值