【XML和Java】Java程序+DOM4J 对XML的解析以及输出

这篇博客介绍了XML的解析技术,包括DOM、SAX和DOM4J。重点讲述了使用DOM4J库在Java中读取和创建XML文件的方法。示例代码展示了如何通过DOM4J读取XML文档中的学生信息,以及如何利用DOM4J生成XML文件。
摘要由CSDN通过智能技术生成

XML的解析

对xml文件进行操作,包括创建xml,对xml文件进行增删改查操作

常见的xml解析技术

  • DOM解析:由官方提供,基于xml树。耗资源多,适用于多次访问

  • SAX解析:由民间提供,基于事件。耗资源少,使用于大量数据

  • JDOM解析:由第三方提供,开源免费。比DOM解析快

  • DOM4J(DOM for Java):由第三方提供,是JDOM的升级版

DOM4J技术解析xml

  1. 在项目内导入 DOM4J 的依赖
    不懂如何添加依赖的小伙伴们,可以看看 【IDEA项目配置】在项目里的xml文件内添加项目依赖
  2. 在项目下的src路径下准备好xml文件,以下是示例:
<!-- scores.xml -->
<?xml version="1.0" encoding="UTF-8" ?>

<!-- 声名内部DTD -->
<!DOCTYPE scores [
	<!ELEMENT scores (student*) >
    <!ELEMENT student (name, course, score) >
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT course (#PCDATA)>
    <!ELEMENT score (#PCDATA)>
    <!ATTLIST student id CDATA #REQUIRED>
]>

<scores>
    <student id="1">
        <name>王同</name>
        <course>java</course>
        <score>89</score>
    </student>
    <student id="2">
        <name>李佳</name>
        <course>sql</course>
        <score>58</score>
    </student>
    <student id="3">
        <name>张三</name>
        <course>fata</course>
        <score>80</score>
    </student>
</scores>
  1. 编写Java代码,将scores.xml中的数据读取出来
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.Iterator;

public class test1 {
    public static void main(String[] args) throws DocumentException {
        //1.创建SAXReader对象,用于读取xml文件
        SAXReader reader = new SAXReader();
        //2.读取xml文件,得到Document对象
        Document document = reader.read(new File("src/scores.xml"));
        //3.获取根元素
        Element rootElement = document.getRootElement();
        //4.迭代器获取根元素下所有子元素
        Iterator<Element> elementIterator = rootElement.elementIterator();
        while (elementIterator.hasNext()){
            //取出迭代器中的元素
            Element element = elementIterator.next();
            //获取属性
            Attribute id = element.attribute("id");
            System.out.println(id.getName()+ "=" + id.getValue());
            //获取子元素
            Element name = element.element("name");
            Element course = element.element("course");
            Element score = element.element("score");
            //打印
            System.out.println(name.getName()+ "=" +name.getStringValue());
            System.out.println(course.getName()+ "=" +course.getStringValue());
            System.out.println(score.getName()+ "=" +score.getStringValue());
        }

    }
}

通过Java程序创建一个xml文件以及相关数据

  1. 在项目内导入 DOM4J 的依赖
    不懂如何添加依赖的小伙伴们,可以看看 【IDEA项目配置】在项目里的xml文件内添加项目依赖
  2. Java代码示例一(输出无缩进等样式的xml文件
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class test2 {
    public static void main(String[] args) throws IOException {
        //1.提供DocumentHelper生成一个Document对象
        Document document = DocumentHelper.createDocument();
        //2.添加并得到根元素
        Element root = document.addElement("books");
        //3.为根元素添加子元素
        Element book = root.addElement("book");
        //4.为book元素添加属性
        book.addAttribute("id","b02");
        //5.为book添加子元素
        Element name = book.addElement("name");
        Element author = book.addElement("author");
        Element price = book.addElement("price");
        //6.为子元素添加文本
        name.addText("Java Tapping");
        author.addText("you");
        price.addText("100");
        //7.将doc输出到xml文件即可
        Writer writer = new FileWriter(new File("src/books.xml")); //输出文件路径
        document.write(writer);
        //8.关闭资源
        writer.close();
    }
}
  1. Java代码示例二(输出有样式好看的xml文件
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class test2 {
    public static void main(String[] args) throws IOException {
        //1.提供DocumentHelper生成一个Document对象
        Document document = DocumentHelper.createDocument();
        //2.添加并得到根元素
        Element root = document.addElement("books");
        //3.为根元素添加子元素
        Element book = root.addElement("book");
        //4.为book元素添加属性
        book.addAttribute("id","b02");
        //5.为book添加子元素
        Element name = book.addElement("name");
        Element author = book.addElement("author");
        Element price = book.addElement("price");
        //6.为子元素添加文本
        name.addText("Java Tapping");
        author.addText("you");
        price.addText("100");
        //7.格式良好的输出
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File("src/books.xml")),format);
        xmlWriter.write(document);
        //8.关闭资源
        xmlWriter.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ヌヌ イホ キT エ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值