整理了一下xml的增删改查操作,代码如下,可直接贴入eclipse导入dom4j 的jar包使用。
package com.jeecg.kedong;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.map.HashedMap;
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 net.sf.json.JSONArray;
/**
*
* @author hongliang.dinghl Dom4j 生成XML文档与解析XML文档
*/
public class Dom4jDemo {
public static void main(String[] args) {
/*createPropertiesXml("D:\\\\properties.xml");
addElement("D:\\\\properties.xml");
updateElement("D:\\\\properties.xml");
*/
JSONArray json = JSONArray.fromObject(parserXml("D:\\\\properties.xml"));
System.out.println(json);
}
//创建xml
public static void createPropertiesXml(String fileName) {
Document document = DocumentHelper.createDocument();
Element properties = document.addElement("properties");
Element title = properties.addElement("property");
Element subtext = title.addElement("id");
subtext.setText("bachground");
Element text = title.addElement("title");
text.setText("背景色:");
Element value = title.addElement("value");
value.setText("black");
Element title1 = properties.addElement("property");
Element subtext1 = title1.addElement("id");
subtext1.setText("width");
Element text1 = title1.addElement("title");
text1.setText("长:");
Element value1 = title1.addElement("value1");
value1.setText("345");
// 设置XML文档格式
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1
outputFormat.setEncoding("UTF-8");
//outputFormat.setSuppressDeclaration(true); //是否生产xml头
outputFormat.setIndent(true); //设置是否缩进
outputFormat.setIndent(" "); //以四个空格方式实现缩进
outputFormat.setNewlines(true); //设置是否换行
try {
// stringWriter字符串是用来保存XML文档的
// StringWriter stringWriter = new StringWriter();
Writer fileWriter = new FileWriter(fileName);
// xmlWriter是用来把XML文档写入字符串的(工具)
XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
// 把创建好的XML文档写入字符串
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//创建xml
public static void createXml(String fileName) {
Document document = DocumentHelper.createDocument();
Element properties = document.addElement("properties");
Element title = properties.addElement("title");
Element text = title.addElement("text");
text.setText("标题");
Element subtext = title.addElement("subtext");
subtext.setText("子标题");
Element tooltip = properties.addElement("tooltip");
Element trigger = tooltip.addElement("trigger");
trigger.setText("axis");
try {
Writer fileWriter = new FileWriter(fileName);
XMLWriter xmlWriter = new XMLWriter(fileWriter);
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
//读取xml
public static List<ConfigProperty> parserXml(String fileName) {
List<ConfigProperty> properties = new ArrayList<ConfigProperty>();
File inputXml = new File(fileName);
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element employees = document.getRootElement();
for (Iterator i = employees.elementIterator(); i.hasNext();) {
Element employee = (Element) i.next();
System.out.println(employee.getName()+"--------------");
ConfigProperty property = new ConfigProperty();
for (Iterator j = employee.elementIterator(); j.hasNext();) {
Element node = (Element) j.next();
if("id".equals(node.getName())) {
property.setId(node.getText());
}else if("title".equals(node.getName())) {
property.setTitle(node.getText());
}else {
property.setValue(node.getText());
}
System.out.println(node.getName() + ":" + node.getText());
}
properties.add(property);
}
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
return properties;
}
//添加元素
public static void addElement(String path){
SAXReader reader = new SAXReader();
Document doc = null;
try {
doc = reader.read(new File(path));//将现有的xml文件读进内存
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//开始修改xml文件(在内存中修改)
if(doc != null){
Element elm = doc.getRootElement();
Element elm2 = elm.addElement("property");
elm2.addElement("id").addText("Jennet");
elm2.addElement("title").addText("female");
elm2.addElement("value").addText("female");
//将修改后的xml文件写到磁盘上
// 设置XML文档格式
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1
outputFormat.setEncoding("UTF-8");
//outputFormat.setSuppressDeclaration(true); //是否生产xml头
outputFormat.setIndent(true); //设置是否缩进
outputFormat.setIndent(" "); //以四个空格方式实现缩进
outputFormat.setNewlines(true); //设置是否换行
try {
// stringWriter字符串是用来保存XML文档的
// StringWriter stringWriter = new StringWriter();
Writer fileWriter = new FileWriter(path);
// xmlWriter是用来把XML文档写入字符串的(工具)
XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
// 把创建好的XML文档写入字符串
xmlWriter.write(doc);
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//修改
public static void updateElement(String path){
SAXReader reader = new SAXReader();
Document doc = null;
try {
doc = reader.read(new File(path));//将现有的xml文件读进内存
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//开始修改xml文件(在内存中修改)
if(doc != null){
List list = doc.selectNodes("//property/id" );
Iterator iter=list.iterator();
while(iter.hasNext()){
Element lastNameElement=(Element)iter.next();
if(lastNameElement.getText().equals("black")) {
lastNameElement.setText("background");
}
}
//将修改后的xml文件写到磁盘上
// 设置XML文档格式
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1
outputFormat.setEncoding("UTF-8");
//outputFormat.setSuppressDeclaration(true); //是否生产xml头
outputFormat.setIndent(true); //设置是否缩进
outputFormat.setIndent(" "); //以四个空格方式实现缩进
outputFormat.setNewlines(true); //设置是否换行
try {
// stringWriter字符串是用来保存XML文档的
// StringWriter stringWriter = new StringWriter();
Writer fileWriter = new FileWriter(path);
// xmlWriter是用来把XML文档写入字符串的(工具)
XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
// 把创建好的XML文档写入字符串
xmlWriter.write(doc);
xmlWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}