Java学习路线(26)——XML与设计模式

一、XML

(一)XML的概念: XML是可扩展标记语言(Extensible Markup Language),一种数据表示形式,可以描述非常复杂的数据结构,常用于传输和存储数据。

(二)XML的特点

  • XML的数据是纯文本形式的,默认采用UTF-8编码
  • 可嵌套

(三)XML使用场景: XML内容经常当做消息进行网络传输,或作为配置文件用于存储系统信息。

(四)XML语法

1、文件格式: 【xxx_xxx.xml】
2、文档声明(必须在第一行):

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

3、标签规则

  • 标签是由一对闭合标签(如<src></src>)组成,其中根标签有且只有一个。
  • 特殊标签如单闭合标签,则必须有结束标记(如<br/>)
  • 标签可定义属性,属性和标签名用空格隔开,属性值必须用引号进行赋值。(如<student id=“1”></student>)
  • 注释: 采用 【<!-- xxxx -->】的格式
  • 正文中的尖括号可能会与标签发生冲突,所以需要用特殊字符代替尖括号,特殊字符格式:【&xxxx;】
特殊字符 被代替字符
&lt <
&gt >
&amp &
&apos
&quot "
  • XML数据区CDATA: 【<![CDATA[ … ]]】

(1)XML示例

<?xml version="1.0" encoding="UTF-8" ?>
<!--根标签只有一个-->
<student>
    <name>病态王子</name>
    <sex></sex>
    <hobby>傲娇</hobby>
    <info>
        <age>25</age>
        <addr>中国</addr>
    </info>
    <!-- 尖括号可能会发生冲突,所以需要用特殊字符代替尖括号 -->
    <sql>
        select id from user where age &gt; 20;
        <![CDATA[
            select * from user where age < 18;
        ]]>
    </sql>
</student>

(2)XML浏览器解析结果

<!-- 根标签只有一个 -->
<student>
<name>病态王子</name>
<sex>男</sex>
<hobby>傲娇</hobby>
<info>
<age>25</age>
<addr>中国</addr>
</info>
<!--  尖括号可能会发生冲突,所以需要用特殊字符代替尖括号  -->
<sql>
select id from user where age > 20;
<![CDATA[ select * from user where age < 18; ]]>
</sql>
</student>

(五)文档约束

**1、概念:**文档约束是用来限定xml文件中的标签以及属性的写法。

2、分类:
(1)DTD

DTD约束文档xxx.dtd

<!ELEMENT 暑假(书+)>
<!ELEMENT 书(书名,作者,售价)>
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 作者(#PCDATA)>
<!ELEMENT 售价(#PCDATA)>

编写xml导入DTD文档

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 书架 SYSTEM "xxx.dtd"

DTD约束的优缺点

  • 优点: 可以约束XML文件的编写
  • 缺点: 不能约束具体数据类型

(2)schema

概念: schema是一种强约束XML,本身也受到其他约束文件的要求

使用步骤

  • 1、编写schema约束文档,文档名为 【xxx.xsd】
  • 2、XML导入schema约束文档

text.xsd

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.itcast.cn"
        elementFormDefault="qualified" >
<!--targetNamespace:声明约束文档的地址(命名空间) -->
    <element name="书架">
<!--        子元素-->
        <complexType>
            <sequence maxOccurs="unbounded">
                <element name="">
                    <complexType>
                        <sequence>
                            <element name="书名" type="string"/>
                            <element name="作者" type="string"/>
                            <element name="售价" type="double"/>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

XML引入schema约束

<?xml version="1.0" encoding="UTF-8" ?>
<!--导包itcast 与 schema对象 -> 引入约束文件 -->
<书架 xmlns="http://www.itcast.cn"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itcast.cn text.xsd">
    <>
        <书名>《红楼梦》</书名>
        <作者>曹雪芹</作者>
        <售价>20.0</售价>
    </>
</书架>

二、XML解析

(一)概念: XML解析是使用程序读取XML中的数据。

(二)解析方式:
1、SAX解析
2、DOM解析

(1)DOM解析文档对象流程

  • 读取文档进入内存,根节点为Document对象
  • XML根节点为第 2 层节点
  • 元素标签为第 3 层节点Element对象
  • 属性标签为第 4 层节点Attibute对象
  • 文本内容为第 5 层节点Text对象

在这里插入图片描述

(三)常见解析工具

工具 说明
JAXP SUN公司提供的一套XML解析API
JDOM JDOM基于树形结构,利用纯JAVA技术对XML文档实现解析、生成、序列化以及其他多种操作
dom4j JDOM puls,用来读写XML文件 。具有性能好、功能强和易使用的特点。
jsoup 功能强大DOM方式的XML解析开发包,针对HTML解析更加方便

(四)使用Dom4j解析XML

1、使用流程

2、Dom4j解析
(1)获取Document对象

构造器/方法 说明
SAXReader() 创建Dom4j的解析器
Document read(String url) 加载XML成为Document对象

(2&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zain_horse

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值