Java使用dom4j对xml进行简单操作

本文详细介绍了一个XML样例及其使用Java的DOM4j库进行读取和写入操作的方法。包括如何获取XML文档对象,访问根节点,选择特定节点,以及格式化输出修改后的XML文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML样例

<?xml version="1.0" encoding="utf-8" ?>
<!-- xml的一个声明头,告诉解析器版本号与编码集 -->
<!-- 
 在 xml文件中所有的标签都可以自定义,
	1.必须成双成对,有头有尾。
	2.xml文件中有且只有一个根节点
	3.xml标签可以带有属性,可以相互嵌套
	4.xml标签命名一定要见名知意
	5.xml标签一般都是小写。
 -->
<Students>
	<Student id="001">
		<name>学生一</name>
		<sex></sex>
		<age>16</age>
	</Student>
	<Student id="002">
		<name>学生二</name>
		<sex></sex>
		<age>16</age>
	</Student>
	<Student id="003">
		<name>学生三</name>
		<sex></sex>
		<age>16</age>
	</Student>
</Students>

java引入dom4j后进行读取操作


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultAttribute;

import java.io.File;
import java.util.List;

public class XmlParseDemoOne {
    public static void main(String[] args) throws DocumentException {
        // 1.获取xml对应的document对象
        Document document = new SAXReader().read(new File("./src/student.xml"));
        // 2.获取根结点对象
        Element rootElement = document.getRootElement();
        // 3.获取所有student节点
        List<Element> nodeTypeName = rootElement.selectNodes("Student");
        // nodeTypeName.forEach(item->System.out.println(item));
        
        // xpath
        List<Element> list = rootElement.selectNodes("//name");
        // 获取对应的值
        // list.forEach(item-> System.out.println(item.getStringValue()));

        List<DefaultAttribute> list1 = rootElement.selectNodes("//@id");
        // list1.forEach(item->System.out.println(item.getValue()));

        List list2 = rootElement.selectNodes("//Students//Student[1]");
        System.out.println(list2);
    }
}

java对Xml进行写入操作


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.*;

public class XmlParseDemoThree {
    public static void main(String[] args) throws IOException, DocumentException {
        // 1.获取xml对应的document对象
        // 2.获取根节点对象。
        Document document = new SAXReader().read(new File("./src/teacher.xml"));
        Element rootElement = document.getRootElement();
        rootElement.remove(rootElement.attribute("id"));
        /** 格式化输出,类型IE浏览一样 */
        OutputFormat format = OutputFormat.createPrettyPrint();
        /** 指定XML编码 */
        format.setEncoding("UTF-8");
        XMLWriter xmlWriter = new XMLWriter(new FileWriter(new File("./src/teacher.xml")),format);
        xmlWriter.write(document);
        xmlWriter.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值