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

xml&Tomcat&Servlet

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

xml&Tomcat&Servlet

xml xml解析技术介绍

xml可扩展的标记性语言

  • 不管是html文件还是xml文件,它们都是标记性文档,都可以使用w3c组织制定的 dom 技术进行解析

  1. 早期JDK为我们提供了两种xml解析技术Dom和Sax:
    1) dom解析技术是w3c组织制定的,而所有的编程语言都对这个解析技术使用了自己的特点进行实现
    2) sun公司在JDK5版本对dom解析技术进行升级:Sax(Simple API for xml)
  2. 第三方解析:
    1) jdom在dom基础上进行了封装
    2) dom4j又对jdom进行了封装
    3) pull主要用在Android手机开发上,是跟sax非常类似,都是事件机制解析xml文件
  • 紧接着会介绍使用dom4j来解析xml文件
dom4j读取xml
  1. 新建一个工程,目录如下:
  2. 在src目录下新建一个xml文件,以及一个Book的Java类
    books.xml文件:


   
       生死疲劳
       莫言
       99.9
   
   
       丰乳肥臀
       莫言
       88.8
   

Book.java:

package com.ldyr;

import java.math.BigDecimal;

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

    public Book() {
    }

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

    public Integer getSn() {
        return sn;
    }

    public void setSn(Integer 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 +
                '}';
    }
}
  1. 接下来就要使用 dom4j 将 books.xml 文件的内容,里面的每一个 book 都解析成为 Book.java 类中的一个对象实例
  2. 在lib目录下添加 dom4j 需要的jar包,以及测试需要的jar包
  3. 如何使用dom4j读取xml文件?

1)在src目录下新建一个Dom4jTest.java类,进行测试,可以打开在dom4j官网下载的jar包中的index.html文件,目录如下
2)打开后出现以下页面
3)根据Quck Start中的提示一步一步操作,进行最简单的dom4j解析xml文件

4)实际操作代码及结果

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

       // 控制台打印,判断是否得到books对象
       System.out.println(document);
   }

控制台打印结果显示如下,表面已经可以使用dom4j读取books.xml文件了

6. 上面的测试1中,我们已经能够读取books.xml文件了,现在写上另一个测试test2,实现读取books.xml文件生成Book类
1)创建一个SaxReader输入流,去读取xml配置文件,生成Document对象

	
	@Test
	public void test2() {		
			// 1.创建一个SaxReader输入流,去读取xml配置文件,生成Document对象
			SAXReader saxReader = new SAXReader();
            Document doc = saxReader.read("src/books.xml");
    }

这里的打印结果第5步已经给出,这里不在展示

2)通过Document对象,获取根元素

	
	@Test
	public void test2() {		
			// 2.通过Document对象,获取根元素
			Element rootElement = doc.getRootElement();
            System.out.println(rootElement);
    }

这里将获取到的根元素,在控制台打印出来,如图所示

3)根据根元素 ,获取books.xml标签对象
其中要用到的知识点有:
i.element()和elements()都是根据标签名查询子元素,有多个子元素要查的时候选择后面的
ii…asXML()可以将标签对象,转化为标签字符串

	
	@Test
	public void test2() {		
			// 3.根据根元素 ,获取books.xml标签对象
			// element()和elements()都是根据标签名查询子元素,有多个子元素要查的时候选择后面的
			List books = rootElement.elements("book");
            for (Element book : books) {
                // asXML()将标签对象,转化为标签字符串
                System.out.println(book.asXML());
            }
    }

这里将获取到的标签对象打印到控制看看

看上图控制台中的结果,正式我们在books.xml文件的books根元素中,编写的内容。

  • 注意:根据根元素 ,获取books.xml标签对象时,可以使用asXML(),将标签对象转化为标签字符串,
    不然我们只能获取到以下的内容,只能判断出根元素中有两个对象,但不知道具体内容


4)遍历,处理每个books标签转换为Book类
知识点:
i. .elementText():直接获取标签元素中的内容
ii. .attributeValue():直接获取标签元素的属性值

```java
	
	@Test
	public void test2() {	
			// 3.根据根元素 ,获取books.xml标签对象
            // element()和elements()都是根据标签名查询子元素,有多个子元素要查的时候选择后面的	
			// 4.遍历,处理每个books标签转换为Book类
            for (Element book : books) {
                // asXML()将标签对象,转化为标签字符串
                // System.out.println(book.asXML());
                String name = book.elementText("name");
                String author = book.elementText("author");
                String price = book.elementText("price");
                String sn = book.attributeValue("sn");
                Book BookObj = new Book(Integer.parseInt(sn), name, author, Double.parseDouble(price));
                System.out.println(BookObj);
            }
    }

控制台的结果如下,已经将books.xml转化为Book对象了

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

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

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