关于Dom4j解析XML文件,外带上一个简单工具

来源:互联网 发布:mac电脑声音很大 编辑:程序博客网 时间:2024/06/08 14:35

注:此程序只有最后一个功能才调用了工具类!!!

前面的都是纯手工,别看错了!!!


注程序

package cn.dao;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import cn.utils.Dom4jUtils;


public class XmlDom4jDemo {
public static void main(String[] args) throws DocumentException, IOException {
method_1();
}

//读取具体某一个值的属性
public static void method_1() throws DocumentException{
//1.得到一个解析器,读取XML文档
// SAXReader sax = new SAXReader();
// Document document = sax.read(new File("src/cn/xml/MyXml.xml"));
Document document = Dom4jUtils.getDocument("src/cn/xml/MyXml.xml");

//2.得到跟节点
Element root = document.getRootElement();
//得到一个子节点,不加S则代表默认为第一本书。
// Element book = (Element) root.elements("book").get(1);
Element book = (Element) root.element("book");
//得到书上的属性值
// String value = book.attributeValue("id");
//得到书名
String value = book.element("书名").getText();
//得到书名的一个属性值
// String value = book.element("书名").attributeValue("id");
System.out.println(value);
}

//添加一个属性值
public static void method_2() throws DocumentException, IOException{
//1.得到解析器
SAXReader sax = new SAXReader();
Document document = sax.read(new File("src/cn/xml/MyXml.xml"));


//得到你要添加的对象,得到一本书
Element book = document.getRootElement().element("book");
//在该对象添加属性
book.addElement("售价").setText("123");

//设置编码格式,以一个标准化格式输出
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");//xml文档中为什么,这里最后就为什么
//更新到文档
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/cn/xml/MyXml.xml"),"utf-8"),format);
writer.write(document);
writer.close();
}

//在指定位置添加一个属性
public static void method_3() throws DocumentException, IOException{
//得到解析器
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/cn/xml/MyXml.xml"));

//得到一本书
Element book = (Element) document.getRootElement().elements("book").get(1);
//得到书下面的所有属性
@SuppressWarnings("unchecked")
List<Element> list = book.elements();
//创建一个属性
Element price = DocumentHelper.createElement("售价");
price.setText("234");
list.add(1, price);

//更新到文档中去
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");

XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/cn/xml/MyXml.xml"), "utf-8"),format);
writer.write(document);
writer.close();
}

//删除某一个属性(默认删除第一个)
public static void method_4() throws DocumentException, IOException{
//得到解析器
SAXReader reader = new SAXReader();
Document document = reader.read("src/cn/xml/MyXml.xml");

//得到你要删除的书
Element book = (Element) document.getRootElement().elements("book").get(1);
Element price = book.element("售价");
price.getParent().remove(price);

//更新到文档中去
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");

XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("src/cn/xml/MyXml.xml"), "utf-8"),format);
writer.write(document);
writer.close();



}

//修改某一个属性
public static void method_5() throws DocumentException, IOException{
String path = "src/cn/xml/MyXml.xml";
String encoding = "utf-8";
Document document = Dom4jUtils.getDocument(path);

//得到你要修改的那本书
Element book = (Element) document.getRootElement().elements("book").get(1);
book.element("作者").setText("敬");

Dom4jUtils.updateXml(encoding, path);
}
}



工具类

package cn.utils;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;


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;


public class Dom4jUtils {
private static Document document;
// private static String raderPath = Dom4jUtils.class.getClassLoader().getResource("../../xml/MyXml.xml").getPath();
public static Document getDocument(String path) throws DocumentException{
//得到解析器
SAXReader reader = new SAXReader();
document = reader.read(new File(path));
return document;
}

public static void updateXml(String encoding,String path) throws IOException{
//更新到文档中去
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(encoding);

XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(path), encoding),format);
writer.write(document);
writer.close();
}
}
















































0 0
原创粉丝点击