java读写xml文件(java读取xml工具类)

createh53个月前 (02-01)技术教程29

1.读取xml文件

文件格式如下:





    
        张无忌
        
        <地址>光明顶
        minmin
         3 < 2 && 5 > 4 
        
             4
            ]]>
        
    
    很多人
    
        敏敏
        
        <地址>光明顶
        wuji
         3 < 2 && 5 > 4 
        
             4
            ]]>
        
    


package com.itheima.d2_xml;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

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

/**
 * 目标:掌握使用Dom4j框架解析XML文件。
 */
public class Dom4JTest1 {
    public static void main(String[] args) throws Exception {
// TestGetResource.java
// 当前包名为:com.loc
//获取当前class文件所在位置,以URL形式返回
        URL url = Class.class.getClass().getResource("/");
//输出:file:/D:/dev/workspace/AnyTest/bin/com/loc/
        System.out.println(url);
//去除file:前缀后剩下的部分:/D:/dev/workspace/AnyTest/bin/com/loc/
        System.out.println(url.getPath());

        // 1、创建一个Dom4J框架提供的解析器对象
        SAXReader saxReader = new SAXReader();

        // 2、使用saxReader对象把需要解析的XML文件读成一个Document对象。

        Document document =
                saxReader.read(url + "\\helloworld.xml" );

        // 3、从文档对象中解析XML文件的全部数据了
        Element root = document.getRootElement();
        System.out.println(root.getName());

        // 4、获取根元素下的全部一级子元素。
        // List elements = root.elements();
        List elements = root.elements("user");
        for (Element element : elements) {
            System.out.println(element.getName());
						// 读取user节点的name节点,是否为空用null判断
            Element elements2 = element.element("name");
            System.out.println("elements2=" + elements2);
                if (elements2.attributeValue("addr") != null) {
                    System.out.println("addr=" + elements2.attributeValue("addr"));
                } else if(elements2.attributeValue("addr") == null){
                    System.out.println("addr2=" + elements2.attributeValue("addr"));

            }

        }
        System.out.println("------------------");
        // 5、获取当前元素下的某个子元素。
        Element people = root.element("people");
        System.out.println(people.getText());

        // 如果下面有很多子元素user,默认获取第一个。
        Element user = root.element("user");
        System.out.println(user.elementText("name"));

        // 6、获取元素的属性信息呢?
        System.out.println(user.attributeValue("id"));
        Attribute id = user.attribute("id");
        System.out.println(id.getName());
        System.out.println(id.getValue());

        List attributes = user.attributes();
        for (Attribute attribute : attributes) {
            System.out.println(attribute.getName() + "=" + attribute.getValue());
        }

        // 7、如何获取全部的文本内容:获取当前元素下的子元素文本值
        System.out.println(user.elementText("name"));
        System.out.println(user.elementText("地址"));
        System.out.println(user.elementTextTrim("地址")); // 取出文本去除前后空格
        System.out.println(user.elementText("password"));

        Element data = user.element("data");
        System.out.println(data.getText());
        System.out.println(data.getTextTrim()); // 取出文本去除前后空格
    }
}

2.写xml

package com.itheima.d2_xml;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.net.URL;
import java.net.URLDecoder;

import static jdk.nashorn.internal.runtime.GlobalFunctions.decodeURI;

/**
 * 目标:如何使用程序把数据写出到 XML文件中去。
 * 
 * 
 *     从入门到跑路
 *     dlei
 *     999.9
 * 
 */
public class Dom4JTest2 {
    public static void main(String[] args) {
        // 1、使用一个StringBuilder对象来拼接XML格式的数据。
        StringBuilder sb = new StringBuilder();
        sb.append("\r\n");
        sb.append("\r\n");
        sb.append("\t").append("从入门到跑路").append("\r\n");
        sb.append("\t").append("dlei").append("\r\n");
        sb.append("\t").append(999.99).append("\r\n");
        sb.append("");
        URL url = Class.class.getClass().getResource("/");

        System.out.println(URLDecoder.decode(url.getPath()));
        try (
                BufferedWriter bw = new BufferedWriter(new FileWriter(URLDecoder.decode(url.getPath()) + "\\book.xml"));
                ){
            bw.write(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

输出xml文件如下



   从入门到跑路
   dlei
   999.99

相关文章

java实现文件上传到服务器(java实现文件上传的三种方式)

java实现文件上传到服务器,java实现大文件上传,java实现大文件分块上传,java实现大文件分片上传,java实现大文件切片上传,java实现大文件批量上传,java实现大文件加密上传,jav...

Java中excel文件解析总结以及超大文件读写的分析报告

在系统与系统之间进行数据传递时,经常需要使用Excel文件来进行数据的导入或者导出。因此,在Java语言实现这类需求时,往往会面临着数据的导入(解析)或者导出(生成)。Java中可以用来处理Excel...

「Java进阶」I/O操作必备知识点:字节流读写实例讲解

序欢迎来到全网最完整的Java进阶知识系列教程!!!每天定时更新!!!本期的课程,我们继续分享I/O文件读写。IO文件读写,根据数据格式不同,分为字节流读写和字符流读写,我们今天先讲字节流读写。如果你...

Java原生代码实现爬虫(爬取小说)(java开源爬虫平台)

Java也能做爬虫。现在提到爬虫人第一个想到的就是python,其实使用Java编写爬虫也是很好的选择,Java成熟的爬虫框架很多,下面给大家展示一个使用Java基础语言编写的爬取小说的案例:实现功能...

这份日志格式规范超棒的,拿走不谢(Java版)

1 简介在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方。写好程序的日志可以帮助我们大大减轻后期维护压力。在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往往...

零拷贝技术及在Java中应用(零拷贝技术是什么)

前言前一段时间参与定位Tomcat某一问题,涉及到sendfile系统调用。忽然想到之前一些使用经验,知道Java领域中有不少开源软件,都使用零拷贝来提升期性能,于是有了本文。先看看我们这些耳熟能详的...