java读写xml文件(java读取xml工具类)
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