主要依赖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; } }