主要依赖jar包dom4j.jar ,main方法中有使用方法
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* XML数据元素操作基类
*
* @author Administrator
*
*/
public class CacheNodeBaseVO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3821539085598864455L;
// 参数传递
protected HashMap<String,Object> parameters = null;
public CacheNodeBaseVO() {
this.parameters = new HashMap<String, Object>();
}
/**
* 加参数
*/
public void addParam(String name, Object value) {
this.parameters.put(name, value);
}
/**
* 增加加参数
*
* @param map
*/
public void addParam(Map map) {
if(map==null || map.size()<=0){
return;
}
Iterator it = map.keySet().iterator();
while (it.hasNext()) {
String key = String.valueOf(it.next());
Object value = map.get(key);
addParam(key, value);
}
}
/**
* 删除参数
*
* @param key
*/
public void removeParam(String key) {
this.parameters.remove(key);
}
public void removeAllParams() {
this.parameters.clear();
}
public String getParam(String key) {
return (String) this.parameters.get(key);
}
public Object getParamObj(String key) {
return this.parameters.get(key);
}
public HashMap<String,Object> getParameters() {
return parameters;
}
public void setParameters(HashMap parameters) {
this.parameters = parameters;
}
public String toString() {
StringBuffer sb = new StringBuffer();
Iterator it = this.parameters.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
sb.append(key + ":" + this.parameters.get(key) + ";");
}
return sb.toString();
}
public static void main(String[] args) {
CacheNodeBaseVO vo = new CacheNodeBaseVO();
vo.addParam("fdiId","22");
vo.addParam("fdiId2","22");
vo.addParam("fdiId3","22");
vo.addParam("fdiId4","22");
vo.addParam("fdiId5","22");
System.out.println(vo.toString());
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import com.etone.util.XMLUtils;
/**
* XML数据元素操作基类
*
* @author Administrator
*
*/
public class CacheNodeVO extends CacheNodeBaseVO implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3821539085598864455L;
private Document node = null;
private Element root = null;
private List subNodes = null;
private Element parent = null;
// fdc属性为null时的默认值
private String fdcDefaultValue = "";
// fdi属性为null时的默认值
private String fdiDefaultValue = "0";
// fdd属性为null时的默认值
private String fddDefaultValue = "00:00";
/**
* 构造方法,root名称为"root"
*
*/
public CacheNodeVO() {
this("Node");
}
/**
* 构造方法
*
* @param rootName
* 根据元素名
*/
public CacheNodeVO(String rootName) {
this.node = DocumentHelper.createDocument();
this.root = this.node.addElement(rootName);
this.subNodes = new ArrayList();
this.parent = this.node.getParent();
}
/**
* 修改本结果的name
*
* @param name
*/
public void setNodeName(String name) {
this.root.setName(name);
}
/**
* 把属性加到本节点元素中
*/
public Element addAttribute(String name, String value) {
if (name == null) {
return null;
}
if (value == null) {
if (name.startsWith("fdi")) {
value = fdiDefaultValue;
} else if (name.startsWith("fdc")) {
value = fdcDefaultValue;
} else if (name.startsWith("fdd")) {
value = fddDefaultValue;
} else
value = "-";
}
return this.root.addAttribute(name, value);
}
/**
* 取属性值
*
* @param name
* @return String
* @date 2008-3-20
* @package com.etone.dao.vo
*/
public String getAttribute(String name) {
return this.root.attributeValue(name);
}
/**
* 把属性加到本节点元素中
*/
public Element addAttribute(Attribute attribute) {
this.root.add(attribute);
return root;
}
/**
* 从本节点元素中移除某指定属性
*/
public boolean removeAttribute(String key) {
return this.root.remove(this.root.attribute(key));
}
/**
* 从本节点元素中移除某指定属性
*/
public boolean removeAttribute(int index) {
return this.root.remove(this.root.attribute(index));
}
/**
* 删除所有属性
*
*/
public void removeAllAttribute() {
List list = new ArrayList();
Iterator it = this.root.attributeIterator();
while (it.hasNext()) {
list.add(it.next());
}
for (int i = 0; i < list.size(); i++) {
this.root.remove((Attribute) list.get(i));
}
}
/**
* 返回XML元素文本形式
*/
public String toString() {
// TODO Auto-generated method stub
if (this.root != null) {
return XMLUtils.toXMLString(this.root, "gb2312");
}
return null;
}
/**
* 返回XML文档文本形式
*/
public String toXMLString() {
if (this.node != null) {
return XMLUtils.toXMLString(this.node, "gb2312");
}
return null;
}
/**
* 生成到xml文件
*
* @param fileNamePath
* 目标XML文件路径名 void
* @date 2008-3-13
* @package com.etone.dao.vo
*/
public void toFile(String fileNamePath) {
try {
/*
* OutputFormat format = OutputFormat.createPrettyPrint();
* format.setEncoding("gb2312"); XMLWriter writer = new
* XMLWriter(new FileWriter(fileNamePath), format );
* writer.write(this.node); writer.close();
*/
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
FileOutputStream fos = new FileOutputStream(new File(fileNamePath));
// XMLWriter writer = new XMLWriter(new FileWriter(fileNamePath),
// format );
XMLWriter writer = new XMLWriter(fos, format);
writer.write(this.node);
writer.close();
} catch (IOException ex) {
System.out.println("生成xml文件时出错." + fileNamePath);
ex.printStackTrace();
}
}
public Document getNode() {
return node;
}
public void setNode(Document node) {
this.node = node;
this.root = this.node.getRootElement();
this.parent = this.node.getParent();
}
public Element getParent() {
return parent;
}
public void setParent(Element parent) {
this.parent = parent;
}
public Element getRoot() {
return root;
}
public void setRoot(Element root) {
this.root = root;
}
public List getSubNodes() {
return subNodes;
}
public String getFdcDefaultValue() {
return fdcDefaultValue;
}
public void setFdcDefaultValue(String fdcDefaultValue) {
this.fdcDefaultValue = fdcDefaultValue;
}
public String getFddDefaultValue() {
return fddDefaultValue;
}
public void setFddDefaultValue(String fddDefaultValue) {
this.fddDefaultValue = fddDefaultValue;
}
public String getFdiDefaultValue() {
return fdiDefaultValue;
}
public void setFdiDefaultValue(String fdiDefaultValue) {
this.fdiDefaultValue = fdiDefaultValue;
}
/**
* 删除原有子结点,再增加新结点
*
* @param subNodes
*/
public void setSubNodes(List subNodes) {
if (subNodes == null) {
return;
}
Iterator it = this.root.elementIterator();
while (it.hasNext()) {
this.root.remove((Element) it.next());
}
this.subNodes = subNodes;
it = subNodes.iterator();
while (it.hasNext()) {
Element e = (Element) ((CacheNodeVO) it.next()).getRoot();
this.root.add(e);
}
}
/**
* 增加子结点
*
* @param subNodes
*/
public void addSubNodes(List subNodes) {
if (subNodes == null) {
return;
}
Iterator it = subNodes.iterator();
while (it.hasNext()) {
CacheNodeVO mapVo = (CacheNodeVO) it.next();
this.subNodes.add(mapVo);
Element e = (Element) mapVo.getRoot();
this.root.add(e);
}
}
/**
* 增加子结点
*
* @param subNodes
*/
public void addSubNode(CacheNodeVO subNode) {
this.subNodes.add(subNode);
this.root.add(subNode.getRoot());
}
public static void main(String[] args) {
CacheNodeVO mapVo = new CacheNodeVO("Data");
mapVo.addAttribute("version", "1.1");
mapVo.addAttribute("name", "flash map data");
mapVo.addAttribute("time", "2008-01-01");
CacheNodeVO mapVo1 = new CacheNodeVO("Rtds");
mapVo1.addAttribute("fdiId", "1");
mapVo1.addAttribute("name", "RTD1");
mapVo1.addAttribute("time", "2008-01-01");
CacheNodeVO mapVo2 = new CacheNodeVO("Rtds");
mapVo2.addAttribute("fdiId", "2");
mapVo2.addAttribute("name", "RTD2");
mapVo2.addAttribute("time", "2008-01-01");
CacheNodeVO mapVo3 = new CacheNodeVO("Rtds");
mapVo3.addAttribute("fdiId", "2");
mapVo3.addAttribute("name", "RTD2");
mapVo3.addAttribute("time", "2008-01-01");
List subNodes = new ArrayList();
subNodes.add(mapVo1);
subNodes.add(mapVo2);
subNodes.add(mapVo3);
mapVo.setSubNodes(subNodes);
mapVo.setSubNodes(subNodes);
// 写入文件
mapVo.toFile("C:/test.xml");
System.out.println("-----------");
System.out.println(mapVo.toXMLString());
// 读取
CacheNodeVO cnv = new CacheNodeVO();
cnv.setNode(XMLUtils.read("C:/test.xml"));
Element root = cnv.getRoot();//获取根节点
List nodes = root.elements("test");//获取根节点下的所有test节点
}
}
import java.io.File;
import java.io.FileWriter;
import java.io.StringWriter;
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;
/**
* XML工具类
*
* @author kstrive
* @since 2008-01-02
*/
public class XMLUtils {
/**
* 返回格式化的XML字段串
*
* @param document
* 要格式化的文档
* @param encoding
* 使用的编码,如果为null刚使用默认编码(gb2312)
* @return 格式化的XML字段串
*/
public static String toXMLString(Document document, String encoding) {
if (encoding == null) {
encoding = "gb2312";
}
StringWriter writer = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gb2312");
XMLWriter xmlwriter = new XMLWriter(writer, format);
try {
xmlwriter.write(document);
} catch (Exception e) {
e.printStackTrace();
}
return writer.toString();
}
/**
* 返回格式化的XML字段串
*
* @param element
* 要格式化的节点元素
* @param encoding
* 使用的编码,如果为null刚使用默认编码(gb2312)
* @return 格式化的XML字段串
*/
public static String toXMLString(Element element, String encoding) {
if (encoding == null) {
encoding = "gb2312";
}
StringWriter writer = new StringWriter();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(encoding);
XMLWriter xmlwriter = new XMLWriter(writer, format);
try {
xmlwriter.write(element);
} catch (Exception e) {
e.printStackTrace();
}
return writer.toString();
}
/**
* 格式化文档并输出到文件
*
* @param document
* 要输出的文档
* @param filename
* XML文件名
* @param encoding
* 使用的编码,如果为null刚使用默认编码(gb2312)
* @return true or false
*/
public static boolean toXMLFile(Document document, String filename,
String encoding) {
if (encoding == null) {
encoding = "gb2312";
}
boolean returnValue = false;
try {
XMLWriter output = null;
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML字符集编码 */
format.setEncoding(encoding);
output = new XMLWriter(new FileWriter(new File(filename)), format);
output.write(document);
output.close();
/** 执行成功,需返回1 */
returnValue = true;
} catch (Exception ex) {
ex.printStackTrace();
returnValue = false;
}
return returnValue;
}
/**
* 格式化XML文件并保存
*
* @param srcFileName
* 源XML文件
* @param desFileName
* 格式化后的XML文件,如果为null,则使用srcFileName
* @param encoding
* 使用的编码,如果为null刚使用默认编码(gb2312)
* @return true or false
*/
public static boolean toXMLFile(String srcFileName, String desFileName,
String encoding) {
if (encoding == null) {
encoding = "gb2312";
}
if (desFileName == null) {
desFileName = srcFileName;
}
boolean returnValue = false;
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(srcFileName));
XMLWriter output = null;
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML字符集编码 */
format.setEncoding(encoding);
output = new XMLWriter(new FileWriter(new File(desFileName)),
format);
output.write(document);
output.close();
/** 执行成功,需返回1 */
returnValue = true;
} catch (Exception ex) {
ex.printStackTrace();
returnValue = false;
}
return returnValue;
}
/**
* 从读取XML文件
*
* @param fileName
* @return Document对象
*/
public static Document read(String fileName) {
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File(fileName));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return document;
}
/**
* 从XML字符串转换到document
*
* @param xmlStr
* XML字符串
* @return Document
*/
public static Document parseText(String xmlStr) {
Document document = null;
try {
document = DocumentHelper.parseText(xmlStr);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return document;
}
}