package com.yujie.xml; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; /** * JDom操作xml文件工具 1、创建的user.xml <?xml version="1.0" encoding="utf-8"?> <list> <user id="0"> <name>小鱼0</name> <age>28</age> <email>0106789@163.com</email> </user> <user id="1"> <name>小鱼1</name> <age>26</age> <email>0106789@163.com</email> </user> <user id="2"> <name>小鱼2</name> <age>26</age> <email>0106789@163.com</email> </user> </list> 2追加后的user.xml <?xml version="1.0" encoding="gb2312"?> <list> <user id="0"> <name>小鱼0</name> <age>26</age> <email>0106789@163.com</email> </user> <user id="1"> <name>小鱼1</name> <age>26</age> <email>0106789@163.com</email> </user> <user id="2"> <name>小鱼2</name> <age>26</age> <email>0106789@163.com</email> </user> <user id="3"> <name>刘德华</name> <age>48</age> <email>AndyLiu@126.com</email> </user> </list> * @author Administrator * */ public class JDom { // 创建XML public void BuildXMLDoc() throws IOException, JDOMException { // 创建根节点 root; Element root = new Element("list"); // 根节点添加到文档中; Document Doc = new Document(root); // 此处 for 循环可替换成 遍历 数据库表的结果集操作; for (int i = 0; i < 3; i++) { // 创建节点 user; Element elements = new Element("user"); // 给 user 节点添加属性 id; elements.setAttribute("id", "" + i); // 给 user 节点添加子节点并赋值; elements.addContent(new Element("name").setText("小鱼"+String.valueOf(i))); elements.addContent(new Element("age").setText("26")); elements.addContent(new Element("email").setText("0106789@163.com")); // 给父节点list添加user子节点; root.addContent(elements); } // 定义输出 XMLOutputter XMLOut = new XMLOutputter(); // 设置格式 Format format = Format.getPrettyFormat(); format.setEncoding("utf-8"); // 设置xml文件的字符为gb2312 format.setIndent(" "); // 设置xml文件的缩进为4个空格 XMLOut.setFormat(format); // 输出 user.xml 文件; XMLOut.output(Doc, new FileOutputStream("user.xml")); } // 读XML节点数据 public void ReadXMLDoc() throws IOException, JDOMException { /** ***********将user.xml个别节点读出显示**************** */ File fn = new File("user.xml"); Document doc = null; // 建立构造器 SAXBuilder sb = new SAXBuilder(); // 判断文件是否存在 if (fn.exists()) { try { // 读入指定文件 doc = sb.build(new FileInputStream("user.xml")); } catch (Exception e) { System.out.println(e.getMessage()); } // 获得根结点 Element root = doc.getRootElement(); // 将根结点下的所有子节点放入List中 List list = root.getChildren(); for (int i = 0; i < list.size(); i++) { System.out.println("-----------------------"); // 取得节点实例 Element item = (Element) list.get(i); // 取得当前节点的子节点 String sid = item.getAttribute("id").getValue();// 取得属性值 System.out.println("id:" + sid); Element Name = item.getChild("name"); String sname = Name.getText();// 取得当前节点的值 System.out.println("Name:" + sname); } } else { System.out.println("Not found child element!"); } /* * 将user.xml内容在控制台显示 //建立构造器 SAXBuilder builder = new SAXBuilder(); * Document doc = null; //读入指定文件 doc = builder.build(new * FileInputStream("user.xml")); XMLOutputter fmt = new XMLOutputter(); * Format format = Format.getPrettyFormat(); * format.setEncoding("gb2312"); //设置xml文件的字符为gb2312 format.setIndent(" * "); //设置xml文件的缩进为4个空格 fmt.setFormat(format); PrintWriter out=new * PrintWriter(System.out); //不加 中文会乱码 fmt.output(doc, out); */ } // 在XML文件尾部追加 public void AddXMLDoc() throws IOException, JDOMException { File fn = new File("user.xml"); Document doc = null; SAXBuilder sb = new SAXBuilder(); // 如果文件存在 if (fn.exists()) { try { doc = sb.build(new FileInputStream("user.xml")); } catch (Exception e) { System.out.println(e.getMessage()); } Element root = doc.getRootElement(); if (root.getContentSize() > 0) { List list = root.getChildren(); Element elements = new Element("user"); // 给 user 节点添加属性 id; elements.setAttribute("id", "" + list.size()); elements.addContent(new Element("name").setText("刘德华")); elements.addContent(new Element("age").setText("48")); elements.addContent(new Element("email") .setText("AndyLiu@126.com")); // 给父节点list添加user子节点; root.addContent(elements); // 设置输出格式 Format f = Format.getPrettyFormat(); f.setIndent(" "); f.setEncoding("utf-8"); XMLOutputter output = new XMLOutputter(f); try { output.output(doc, new FileOutputStream("user.xml")); } catch (Exception e) { System.out.println(e.getMessage()); } } // 如果文件不存在 else { System.out.println("Not found child element!"); } } else { System.out.println("找不到指定的文件!"); } } /** * @param args */ public static void main(String[] args) { try { JDom jdom = new JDom(); jdom.BuildXMLDoc(); //创建 // jdom.AddXMLDoc(); //追加 jdom.ReadXMLDoc();// 读取 } catch (Exception e) { e.printStackTrace(); } } }