在使用之前请先下载DOM4J的jar包,并导入到java工程中。
DOM4J下载地址:http://pan.baidu.com/s/1miQ3CFm
修改节点
// 创建文件对象.
File file = new File("write.xml");
// 创建字节输入流
FileInputStream fis = new FileInputStream(file);
// 创建xml核心解析器。
SAXReader saxReader = new SAXReader();
// 使用核心解析器读取xml文件,
Document xmlDocument = saxReader.read(fis);
// 获取根节点名。
Element rootElement = xmlDocument.getRootElement();
String rootName = rootElement.getName();
System.out.println("该文件的根结点名:" + rootName);
System.out.println("----------------------------------");
{
// 创建节点
Element animalElement = DocumentHelper.createElement("animal");
// 给节点添加内容
animalElement.setText("cat");
// 在该节点下添加节点
rootElement.add(animalElement);
}
System.out.println("----------------------------------");
{
// 在指定为创建节点
// 创建节点
Element animalElement = DocumentHelper.createElement("animal");
// 给节点添加内容
animalElement.setText("dog");
List<Element> listElement = rootElement.elements();
// 在0号位置创建节点
listElement.add(0, animalElement); // 因为listElement不是new出来的,所以操作listElent相当于操作rootElement即xmlDocument。
}
System.out.println("----------------------------------");
// 创建字节输出流
FileOutputStream fos = new FileOutputStream(file);
// 创建输出模式
// OutputFormat format = OutputFormat.createCompactFormat();//紧缩模式
OutputFormat format = OutputFormat.createPrettyPrint();// 优雅的分行模式。
// 用指定输出模式创建xml输出对象
XMLWriter xmlWriter = new XMLWriter(fos, format);
// 向硬盘写出xml文件
xmlWriter.write(xmlDocument);
xmlWriter.close();
System.out.println("xml修改完毕,并重写到该文件");
修改xml文件中的元素的内容和元素.
// 文件所在位置
String path = "write.xml";
// 创建文件对象
File file = new File(path);
// 创建字节输入流
FileInputStream fis = new FileInputStream(file);
// 创建xml核心解析器。
SAXReader saxReader = new SAXReader();
// 使用核心解析器读取xml文件,
Document xmlDocument = saxReader.read(fis);
// 获取根节点名。
Element rootElement = xmlDocument.getRootElement();
String rootName = rootElement.getName();
System.out.println("该文件的根结点名:" + rootName);
// 修改指定节点。
Element pointElement = rootElement.element("book");
System.out.println(pointElement.getText());
// 修改属性
pointElement.addAttribute("id", "it2016"); // 没有的属性,会自动添加,有就修改。
// 修改内容
pointElement.setText("伊索寓言");
System.out.println("----------------------------------");
// 创建字节输出流
FileOutputStream fos = new FileOutputStream(file);
// 创建输出模式
// OutputFormat format = OutputFormat.createCompactFormat();//紧缩模式
OutputFormat format = OutputFormat.createPrettyPrint();// 优雅的分行模式。
// 用指定输出模式创建xml输出对象
XMLWriter xmlWriter = new XMLWriter(fos, format);
// 向硬盘写出xml文件
xmlWriter.write(xmlDocument);
xmlWriter.close();
System.out.println("xml修改完毕,并重写到该文件");
xml核心解析器的运用,对xml文件的节点读取操作。
// 创建字节输入流,
FileInputStream fis = new FileInputStream(new File("my.xml"));
// 创建xml核心解析器。
SAXReader saxReader = new SAXReader();
// 使用核心解析器读取xml文件,
Document xmlDocument = saxReader.read(fis);
// 获取根节点名。
Element rootElement = xmlDocument.getRootElement();
String rootName = rootElement.getName();
System.out.println("该文件的根结点名:" + rootName);
// 获取根节点下指定节点的内容。
{// 用花括号阔取这个区域,好释放掉变量,下面的代码才可以使用pointElement的变量。
Element pointElement = rootElement.element("book");
String pointText = pointElement.getText();
System.out.println("指定的节点的内容:" + pointText);
}
System.out.println("------------------------------------");
// 获取根节点下的指定节点的所有相同节点的内容。
{// 用花括号阔取这个区域,好释放掉变量,下面的代码才可以使用pointElements的变量。
List<Element> pointElements = rootElement.elements("book");
for (Element pointElement : pointElements) {
String pointText = pointElement.getText();
System.out.println("指定的节点的所有内容:" + pointText);
}
}
System.out.println("------------------------------------");
// 获取根节点下的所有节点内容
{
List<Element> pointElements = rootElement.elements();
for (Element pointElement : pointElements) {
String pointText = pointElement.getText();
System.out.println("所有同一级节点的内容:" + pointText);
}
}
System.out.println("------------------------------------");
//跨层访问element
Element element = rootElement.element("computer").element("name");
System.out.println("跨层访问element的内容:" + element.getText());
把xml语句写到硬盘中的xml文件中.
// xml语句
String str = "<bookStore><book>海底两万里</book></bookStore>";
// 从硬盘中读取xml文件
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File("new.xml")));
// 把xml文件写到硬盘中。
xmlWriter.write(DocumentHelper.parseText(str));
xmlWriter.close();
System.out.println("XML文件输出完毕");
// 向硬盘创建一个 xml文件.
// 在内存中创建一个xml文件
Document xmlDocument = DocumentHelper.createDocument();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File(trgPath)));
xmlWriter.write(xmlDocument);
xmlWriter.close();
以下为完整代码
package cn.itcatst_01;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class dom4j {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
}
// 修改节点.
public static void Element() throws Exception {
// 创建文件对象.
File file = new File("write.xml");
// 创建字节输入流
FileInputStream fis = new FileInputStream(file);
// 创建xml核心解析器。
SAXReader saxReader = new SAXReader();
// 使用核心解析器读取xml文件,
Document xmlDocument = saxReader.read(fis);
// 获取根节点名。
Element rootElement = xmlDocument.getRootElement();
String rootName = rootElement.getName();
System.out.println("该文件的根结点名:" + rootName);
System.out.println("----------------------------------");
{
// 创建节点
Element animalElement = DocumentHelper.createElement("animal");
// 给节点添加内容
animalElement.setText("cat");
// 在该节点下添加节点
rootElement.add(animalElement);
}
System.out.println("----------------------------------");
{
// 在指定为创建节点
// 创建节点
Element animalElement = DocumentHelper.createElement("animal");
// 给节点添加内容
animalElement.setText("dog");
List<Element> listElement = rootElement.elements();
// 在0号位置创建节点
listElement.add(0, animalElement); // 因为listElement不是new出来的,所以操作listElent相当于操作rootElement即xmlDocument。
}
System.out.println("----------------------------------");
// 创建字节输出流
FileOutputStream fos = new FileOutputStream(file);
// 创建输出模式
// OutputFormat format = OutputFormat.createCompactFormat();//紧缩模式
OutputFormat format = OutputFormat.createPrettyPrint();// 优雅的分行模式。
// 用指定输出模式创建xml输出对象
XMLWriter xmlWriter = new XMLWriter(fos, format);
// 向硬盘写出xml文件
xmlWriter.write(xmlDocument);
xmlWriter.close();
System.out.println("xml修改完毕,并重写到该文件");
}
// 修改xml文件中的元素的内容和元素.
public static void writeElement() throws Exception {
// 文件所在位置
String path = "write.xml";
// 创建文件对象
File file = new File(path);
// 创建字节输入流
FileInputStream fis = new FileInputStream(file);
// 创建xml核心解析器。
SAXReader saxReader = new SAXReader();
// 使用核心解析器读取xml文件,
Document xmlDocument = saxReader.read(fis);
// 获取根节点名。
Element rootElement = xmlDocument.getRootElement();
String rootName = rootElement.getName();
System.out.println("该文件的根结点名:" + rootName);
// 修改指定节点。
Element pointElement = rootElement.element("book");
System.out.println(pointElement.getText());
// 修改属性
pointElement.addAttribute("id", "it2016"); // 没有的属性,会自动添加,有就修改。
// 修改内容
pointElement.setText("伊索寓言");
System.out.println("----------------------------------");
// 创建字节输出流
FileOutputStream fos = new FileOutputStream(file);
// 创建输出模式
// OutputFormat format = OutputFormat.createCompactFormat();//紧缩模式
OutputFormat format = OutputFormat.createPrettyPrint();// 优雅的分行模式。
// 用指定输出模式创建xml输出对象
XMLWriter xmlWriter = new XMLWriter(fos, format);
// 向硬盘写出xml文件
xmlWriter.write(xmlDocument);
xmlWriter.close();
System.out.println("xml修改完毕,并重写到该文件");
}
// xml核心解析器的运用,对xml文件的节点读取操作。
public static void readElement() throws Exception {
// 创建字节输入流,
FileInputStream fis = new FileInputStream(new File("my.xml"));
// 创建xml核心解析器。
SAXReader saxReader = new SAXReader();
// 使用核心解析器读取xml文件,
Document xmlDocument = saxReader.read(fis);
// 获取根节点名。
Element rootElement = xmlDocument.getRootElement();
String rootName = rootElement.getName();
System.out.println("该文件的根结点名:" + rootName);
// 获取根节点下指定节点的内容。
{// 用花括号阔取这个区域,好释放掉变量,下面的代码才可以使用pointElement的变量。
Element pointElement = rootElement.element("book");
String pointText = pointElement.getText();
System.out.println("指定的节点的内容:" + pointText);
}
System.out.println("------------------------------------");
// 获取根节点下的指定节点的所有相同节点的内容。
{// 用花括号阔取这个区域,好释放掉变量,下面的代码才可以使用pointElements的变量。
List<Element> pointElements = rootElement.elements("book");
for (Element pointElement : pointElements) {
String pointText = pointElement.getText();
System.out.println("指定的节点的所有内容:" + pointText);
}
}
System.out.println("------------------------------------");
// 获取根节点下的所有节点内容
{
List<Element> pointElements = rootElement.elements();
for (Element pointElement : pointElements) {
String pointText = pointElement.getText();
System.out.println("所有同一级节点的内容:" + pointText);
}
}
System.out.println("------------------------------------");
//跨层访问element
Element element = rootElement.element("computer").element("name");
System.out.println("跨层访问element的内容:" + element.getText());
}
// 把xml语句写到硬盘中的xml文件中.
public static void parseText() throws Exception {
// xml语句
String str = "<bookStore><book>海底两万里</book></bookStore>";
// 从硬盘中读取xml文件
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File("new.xml")));
// 把xml文件写到硬盘中。
xmlWriter.write(DocumentHelper.parseText(str));
xmlWriter.close();
System.out.println("XML文件输出完毕");
}
// 向硬盘创建一个 xml文件.
public static void createXML(String trgPath) throws Exception {
// 在内存中创建一个xml文件
Document xmlDocument = DocumentHelper.createDocument();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File(trgPath)));
xmlWriter.write(xmlDocument);
xmlWriter.close();
}
}