JavaWeb-XML

一.XML简介

  1. 什么是XML?
    xml是可扩展的标记性语言。
  2. xml的作用?
    xml的主要作用有:
    a. 用来保存数据,而且这些数据具有自我描述性。
    b. 它还可以做为项目或者模块的配置文件。
    c. 还可以做为网络传输数据的格式(现在JSON为主)。

二.xml语法

  1. 文档声明
  2. 元素(标签)
  3. xml属性
  4. xml注释
  5. 文本区域(CDATA区)

2.1.文档声明

我们先创建一个简单的XML文件,用来描述图书信息
1)、创建一个xml文件
在这里插入图片描述
文件名:
在这里插入图片描述

<?xmlversion="1.0"encoding="UTF-8"?>xml声明。

xml声明version是版本的意思encoding是编码,
而且这个<?xml要连在一起写,否则会有报错。
属性:
version 是版本号
encoding 是xml的文件编码
standalone=“yes/no” 表示这个xml文件是否是独立的xml文件
2)、图书有id属性表示唯一标识,书名,有作者,价格的信息。

<?xml version="1.0" encoding="UTF-8" ?>
<!--以上文件就是xml文件的声明
version="1.0"    version表示xml的版本
encoding="utf-8" encoding表示xml文本自身的编码-->
<books>
    <book sn="SN123456789"><!--book表示一个图书信息  sn属性表示图书序列号-->
        <name>时间简史</name><!--name标签表示书名-->
        <author>霍金</author><!--author表示作者-->
        <price>74</price><!--price表示图书价格-->
    </book>
    <book sn="SN123456781"><!--book表示一个图书信息  sn属性表示图书序列号-->
        <name>时间</name><!--name标签表示书名-->
        <author>霍金02</author><!--author表示作者-->
        <price>7489</price><!--price表示图书价格-->
    </book>
</books>

2.2.xml注释

html和XML注释一样: < !- -html注释- ->

2.3.元素(标签)

html标签:
格式:<标签名>封装的数据</标签名>。
单标签:<标签名/>。
<br/ >换行。
<hr/ >水平线双标签<标签名>封装的数据</标签名>。
标签名大小写不敏感。
标签有属性,有基本属性和事件属性。
标签要闭合(不闭合,html中不报错。但我们要养成良好的书写习惯。闭合)。
1)什么是xml元素
在这里插入图片描述元素是指从开始标签到结束标签的内容。
例如:< title >java编程思想< / title>
元素 我们可以简单的理解为是标签。
Element 翻译 元素
2)XML命名规则
XML元素必须遵循以下命名规则:
2.1)名称可以含字母、数字以及其他的字符
例如:

<book sn="SN123456789"><!--book表示一个图书信息  sn属性表示图书序列号-->
        <name>时间简史</name><!--name标签表示书名-->
        <author>霍金</author><!--author表示作者-->
        <price>74</price><!--price表示图书价格-->
    </book>

2.2)、名称不能以数字或者标点符号开始
在这里插入图片描述

2.3)、名称不能包含空格
在这里插入图片描述3)、xml中的元素(标签)也分成单标签和双标签:

单标签
格式:<标签名属性=”值”属性=”值”…/>
双标签
格式:<标签名属性=”值”属性=”值”…>文本数据或子标签</标签名>
在这里插入图片描述

2.4.xml属性

xml的标签属性和html的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签上可以书写多个属性。每个属性的值必须使用引号引起来。
规则和标签的书写规则一致。
在这里插入图片描述

  1. 属性必须使用引号引起来,不引会报错示例代码
    在这里插入图片描述

2.5.语法规则:

2.5.1.所有XML元素都须有关闭标签(也就是闭合)
2.5.2.XML标签对大小写敏感

在这里插入图片描述

2.5.3.XML必须正确地嵌套

在这里插入图片描述

2.5.4.XML文档必须有根元素

根元素就是顶级元素,
没有父标签的元素,叫顶级元素。
根元素是没有父标签的顶级元素,而且是唯一一个才行。
在这里插入图片描述

2.5.5.XML的属性值须加引号

在这里插入图片描述

2.5.6.XML中的特殊字符

在这里插入图片描述

2.5.7.文本区域(CDATA区)

CDATA语法可以告诉xml解析器,我CDATA里的文本内容,只是纯文本,不需要xml语法解析CDATA格式:

<![CDATA[这里可以把你输入的字符原样显示,不会解析xml]]>

在这里插入图片描述

三.xml解析技术介绍

xml可扩展的标记语言。
不管是html文件还是xml文件它们都是标记型文档,都可以使用w3c组织制定的dom技术来解析。
在这里插入图片描述document对象表示的是整个文档(可以是html文档,也可以是xml文档)。
早期JDK为我们提供了两种xml解析技术DOM和Sax简介(已经过时,但我们需要知道这两种技术)

  1. dom解析技术是W3C组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。
  2. Java对dom技术解析标记也做了实现。sun公司在JDK5版本对dom解析技术进行级:SAX(SimpleAPIforXML)SAX解析,它跟W3C制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容。它是一行一行的读取xml文件进行解析的。不会创建大量的dom对象。所以它在解析xml的时候,在内存的使用上。和性能上。都优于Dom解析。
  3. 第三方的解析:
    a. jdom在dom基础上进行了封装。
    b. dom4j又对jdom进行了封装。
    c. pull主要用在Android手机开发,是在跟sax非常类似都是事件机制解析xml文件。
    d. 这个Dom4j它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析xml文件。

3.1、Dom4j类库的使用

在这里插入图片描述解压后:
在这里插入图片描述

3.2.dom4j目录的介绍:

  1. docs是文档目录
    在这里插入图片描述2) 如何查Dom4j的文档

在这里插入图片描述3) Dom4j快速入门
在这里插入图片描述
4) lib目录
在这里插入图片描述5) src目录是第三方类库的源码目录:
在这里插入图片描述

3.3.dom4j编程步骤:

第一步:先加载xml文件创建Document对象。
第二步:通过Document对象拿到根元素对象。
第三步:通过根元素.elelemts(标签名);可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象。
第四步:找到你想要修改、删除的子元素,进行相应在的操作。
第五步,保存到硬盘上。

3.4.获取document对象

  1. 创建一个lib目录,并添加dom4j的jar包。并添加到类路径。
    在这里插入图片描述需要解析的books.xml文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!--以上文件就是xml文件的声明
version="1.0"    version表示xml的版本
encoding="utf-8" encoding表示xml文本自身的编码-->
<books>
    <book sn="SN123456789"><!--book表示一个图书信息  sn属性表示图书序列号-->
        <name>时间简史</name><!--name标签表示书名-->
        <author>霍金</author><!--author表示作者-->
        <price>74</price><!--price表示图书价格-->
    </book>
    <book sn="SN123456781"><!--book表示一个图书信息  sn属性表示图书序列号-->
        <name>时间</name><!--name标签表示书名-->
        <author>霍金02</author><!--author表示作者-->
        <price>7489</price><!--price表示图书价格-->
    </book>
    <book sn="SN123456" name="zyy"/><!--单标签模式-->
</books>

解析获取Document对象的代码
第一步,先创建SaxReader对象。这个对象,用于读取xml文件,并创建Document:

@Test
    public void test1() {
        //1.创建一个saxReader输入流,去读取xml配置文件,生成Document对象
        SAXReader saxReader = new SAXReader();
        //2.这个对象用于读取xml文件,然后返回一个Document
        Document document = null;
        try {
            document = saxReader.read("src/books.xml");
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        //3.打印到控制台,看看是否创建成功。
        System.out.println(document);
    }

出现如图所示,即成功:
在这里插入图片描述

3.5.遍历标签获取所有标签中的内容

需要分四步操作:
第一步,通过创建SAXReader对象。来读取xml文件,获取Document对象。
第二步,通过Document对象。拿到XML的根元素对象。
第三步,通过根元素对象。获取所有的book标签对象。
第四步,遍历每个book标签对象。然后获取到book标签对象内的每一个元素,再通过getText()方法拿到起始标签和结束标签之间的文本内容。
代码如下:

/**
     * 读取books.xml生成book类
     */
    @Test
    public void test2(){
        //1.读取books.xml文件
        SAXReader reader = new SAXReader();
        //在Junit测试中,相对路径是从模块名开始算
        Document document = null;
        try {
            document = reader.read("src/books.xml");
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        //2.通过Document对象获取根元素
        Element rootElement = document.getRootElement();
        //System.out.println(rootElement);
        //3.通过根元素获取book标签对象
        //element()和elements()都是通过标签名查找子元素
        List<Element> books = rootElement.elements("book");
        //4.遍历,处理每个book标签转换为book类
        for (Element book :books){
            Element price = book.element("price");
            Element name = book.element("name");
            Element author = book.element("author");
            System.out.println("书名"+name.getText()+",价格:"+price.getText()+",作者:"+author.getText());
        }
    }

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值