[xml][dom4j][学习笔记]寒假javaweb学习之旅1.0

[xml][dom4j][学习笔记]寒假javaweb学习之旅1.0,第1张

[xml][dom4j][学习笔记]寒假javaweb学习之旅1.0

寒假不能大溜特溜,必须得狠狠地学

xml

xml是可扩展的标记性语言。

xml的作用

1、用来保存数据,而且这些数据具有自我描述性

2、它还可以做为项目或者模块的配置文件。
3、还可以做为网络传输数据的格式。

什么是xml元素

元素是指从开始标签到结束标签的内容。可以当标签理解。

例如下面的书本1 就是。




    
        书本1
        我不好说
    
    
        <br">>
        上面的特殊字符用的很秒
    
    

xml元素命名规则

● 名称可以含字母、数字以及其他的字符 (甚至中文都行头)
● 名称不能以数字或者标点符号开始
● 名称不能以字符“xml" (或者XML、Xml)开始
● 名称不能包含空格

xml 文档必须有根元素

根元素就是顶级元素,
没有父标签的元素,叫顶级元素。
根元素是没有父标签的顶级元素,而且是唯一个才行。下面我多了一个student元素 ,它直接给我报错。

文本区域(CDATE)

格式
问题: 我想要<<<<<<<<<<< 但是不想一直写 <
CDATA语法可以告诉xml解析器,我CDATE里的文本内容,只是纯文本,不需要xml语法解析。

上面的特殊字符用的很秒
dom4j

前面我们写xml文件,非常的开心,但我们需要用xml的内容该怎么办捏,这时候就需要xml解析技术。

配置

我们广快(最近看红警08看多了)溜到他的官网

下载dom4j-1.6.1和 我特异损了一个和视频同步版本。
很快嗷,我们打开文件夹一看
然后我们溜一溜docs 看1看index 然后quick start 了解下

那么就让我们快速的来写一些东西来试试看把

现在,要这个将jar包添加到类路径

解释体验

马上创建一个类来开溜,这时候肯定会有家人们会问了,这个SAX是什么东西,其实他是Simpel API for xml 基于事件驱动,读取一行解析一行,不能增删,只能查询。
我们通过创建一个SAXReader输入流去读取xml文件,会获得一个document对象。

获取根元素

document 对象 有一个重要的方法叫 getRootElement() 可以获取到根元素,拿到之后可以进行各种play掠

把标签对象转为标签字符串

asXML()

获取子元素

有两种方法element 和 elements()。
下图,我们拿到根元素对象后,很快嗷,elements()返回一个Elment的集合,就拿到了他的子元素集合,然后狠狠的滴遍历掠掠掠通过asXML(),输出来康康。

获取标签中的文本内容

间接取法

获取子元素,使用getText()方法
你的智力会被侮辱,建议别看…

这时候,聪明的你,肯定会说,欸欸欸,怎么给来了一个空指针异常啊,我一看xml文件,嗷↑↓,原来是

我这第三本书啊,直接把name写成标签属性咯

直接取法

elementText()

甚至不会出现间接获取的那种错误,找不到就输出null,所以我强烈建议大家使用第二种方法


现在刚刚幸幸苦苦写的book类,来使用下

所用到的代码

book类

package com.flzj.pojo;

import java.math.BigDecimal;

public class Book {
    private String sn;
    private String name;
    private BigDecimal price;
    private String author;

    @Override
    public String toString() {
        return "Book{" +
                "sn='" + sn + ''' +
                ", name='" + name + ''' +
                ", price=" + price +
                ", author='" + author + ''' +
                '}';
    }

    public Book(String sn, String name, String author) {
        this.sn = sn;
        this.name = name;
        this.author = author;
    }

    

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}

xml代码



    
        书本1
        我不好说
    
    
        <br">>
        上面的特殊字符用的很秒
    
    

体验解释的java代码

package com.flzj.pojo;

import org.dom4j.document;
import org.dom4j.documentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

public class Dom4jTest {
    @Test
    public void test1() throws Exception {
        //创建一个SaxReader输入流,去读取xml配置文件,生成document对象
        SAXReader saxReader = new SAXReader();
        document document = saxReader.read("src/books.xml");
        System.out.println(document);
    }

    @Test
    public void test2() throws documentException {
        //读取books.xml 文件
        SAXReader saxReader = new SAXReader();
        document document = saxReader.read("src/books.xml");
        //通过document对象获取元素
        Element rootElement = document.getRootElement();
        //通过根元素获取book标签对象
        //element()和elements()都是通过标签名查找子元素
        List books = rootElement.elements("book");
        //遍历开溜
        for(Element book : books){
            String sn = book.elementText("sn");
            String name = book.elementText("name");
            String author = book.elementText("author");
            System.out.println(new Book(sn,name,author));
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5706790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存