栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

03SGG

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

03SGG

整理自尚硅谷Javaweb课程(后端)及其笔记js仅用作个人笔记留存

链接:尚硅谷javaWeb课程xml部分

文章目录

XML简介XML语法

文档声明注释元素(标签)

xml元素xml命名规则xml分为单标签和双标签 xml属性语法规则 xml解析技术Dom4j解析技术

Dom4j类库Dom4j文档目录介绍获取document对象

准备工作获取对象 读取xml文件生成java类

XML简介

xml是可扩展(即可以自定义)的标记性语言

作用

用来保存数据,而这些数据具有自我描述性可以作为项目或者模块的配置文件可以作为网络传输数据的格式(现在JSON为主) XML语法 文档声明



   
     
        时间简史   
        霍金    
        75   
    
     
        java从入门到入土   
        学习    
        3125   
    


注释

与html一样:


元素(标签) xml元素

xml元素是指从开始标签到结束标签的部分

元素可以包含其他元素、文本或者两者的混合物

元素可以拥有属性

xml命名规则

名称可以含有字母数字和其他的字符不能以数字或者标点符号开始不能以"xml"开头,其任意大小写也是名称不能 包含空格 xml分为单标签和双标签

单标签和双标签效力相等

单标签的属性等价于双标签的属性加上内部的子标签所包含的内容


xml属性

xml属性可以提供元素的额外信息标签的属性必须用引号引起来


语法规则

所有xml元素都必须关闭标签

xml标签对大小写敏感

xml必须正确的嵌套

xml必须有根元素

根元素是没有父标签的顶级元素,而且是唯一一个

xml的属性值必须加上引号

xml特殊字符

<>

文本区域(CDATA区)

该区域内只是纯文本,不需要xml语法解析格式:

xml解析技术

略,暂时没必要,自己查资料看看即可

Dom4j解析技术 Dom4j类库

GitHub地址:Dom4j


Dom4j文档目录介绍

docs

参考文档目录,一般从index界面进入。英文界面

lib

其依赖的第三方jar包

src

第三方类库的源码和测试代码


获取document对象 准备工作

需要解析的xml文件



   
     
        时间简史   
        霍金    
        75   
    
     
        java从入门到入土   
        学习    
        3125   
    

根据要解析的内容创建的对应对象类

有无参、全部构造器

get、set方法

toString 方法

package pojo;

import java.math.BigDecimal;

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

    public Book() {
    }

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

    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 String getAuthor() {
        return author;
    }

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

    public BigDecimal getPrice() {
        return price;
    }

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

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

获取对象

创建一个lib目录,并添加dom4j的jar包(以本人使用为例)

添加到类路径: 右键 最下方Add as Library…设置model权限即可(global全部、Project项目、model模型)

创建测试类

将测试需要的两个junit的jar包添加到lib

junit-4.12hamcrest-core-1.3

按照dom4j的文档说明获取对象

package pojo;
import org.dom4j.document;
import org.dom4j.documentException;
import org.dom4j.io.SAXReader;
import org.junit.Test;

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

读取xml文件生成java类
package pojo;


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

import java.math.BigDecimal;
import java.util.List;

public class Dom4jTest {
    @Test
    public void test01() throws documentException {
        //创建一个SAXReaders输入流,去读取xml配置文件,生成document对象
        SAXReader saxReader = new SAXReader();
        //在Junit测试中,相对路径是从模块名开始的
        document document = saxReader.read("src/01_books.xml");
        System.out.println(document);
    }

    @Test
    public void test02() throws documentException {
        //读取book.xml文件
        SAXReader saxReader = new SAXReader();
        //在Junit测试中,相对路径是从模块名开始的
        document document = saxReader.read("src/01_books.xml");
        //通过document对象获取根元素
        Element rootElement = document.getRootElement();
        //System.out.println(rootElement);
        //通过根元素获取book标签对象
        //element和elements都是通过标签名查找子元素,但是一个是一个,一个是多个
        List books = rootElement.elements("book");
        //遍历,处理每个book标签对象转化为Book类
        for (Element book : books) {
            //asXML()把标签对象转化为标签字符串
            //System.out.println(book.asXML());
            Element nameElement = book.element("name");
            //getTest()获取标签的文本内容
            String nameText = nameElement.getText();
            //直接获取指定标签的文本内容
            //上述也可直接使用String nameTest = .elementTest("name");
            String priceTest = book.elementText("price");
            String authorTest = book.elementText("author");
            //获取标签属性的文本内容
            String snValue = book.attributevalue("sn");

            System.out.println(new Book(snValue, nameText, authorTest, Double.parseDouble(priceTest)));
        }
    }
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727498.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号