1.入门实例一:xml文件的读取与修改
xml文件:library.xml
jdom 60.0
代码实例:JDomParse.java
package edu.sjtu.erplab.jdom; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; //下面是引用到JDOM中的类 import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; public class JDomParse { public JDomParse() { //定义xml文件路径 String xmlpath = "D:\\Documents\\workspace\\JAVAStudy\\src\\edu\\sjtu\\erplab\\jdom\\library.xml"; SAXBuilder builder = new SAXBuilder(false); try { Document doc = builder.build(xmlpath); // 得到根元素 Element books = doc.getRootElement(); // 得到“books”元素的所在名称为“book”的元素,并把这些元素都放到一个List集合中 List booklist = books.getChildren("book"); /** * 轮循List集合,方法1: */ for (Iterator iter = booklist.iterator(); iter.hasNext();) { Element book = (Element) iter.next(); String email = book.getAttributeValue("email");// 获取email元素的值 System.out.println(email); String name = book.getChildTextTrim("name"); System.out.println(name); // 修改name元素的值,注意的是,必须确定book元素的名为“name”的子元素只有一个。 book.getChild("name").setText("edit-jdom"); } /** * 轮循List集合,方法2: */ // for (int i = 0; i < booklist.size(); i++) { // Element book = (Element) booklist.get(i); // String email = book.getAttributeValue("email");// 获取email元素的值 // System.out.println(email); // String name = book.getChildTextTrim("name"); // System.out.println(name); //// 修改name元素的值,注意的是,必须确定book元素的名为“name”的子元素只有一个。 // book.getChild("name").setText("edit-jdom"); // } // 使用XMLOutputter类,把已经修改了的Document保存进XML文档中。 XMLOutputter outputter = new XMLOutputter(); outputter.output(doc, new FileOutputStream(xmlpath)); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new JDomParse(); } }
输出结果:
abc@163.com
jdom这个时候在去查看library.xml会发现它已经变为:
edit-jdom 60.0
2.入门实例二:XML文件的创建与读取
代码实例:JdomRWXML.java
package edu.sjtu.erplab.jdom; 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.XMLOutputter; public class JdomRWXML { /** * 创建xml文档 * @throws IOException * @throws JDOMException */ public void BuildXMLDoc() throws IOException, JDOMException { // 创建根节点 list; Element root = new Element("list"); // 将根节点添加到文档中; Document Doc = new Document(root); // 此处 for 循环可替换成 遍历 数据库表的结果集操作; for (int i = 0; i < 5; i++) { // 创建新节点 company; Element elements = new Element("company"); // 给 company 节点添加属性 id; elements.setAttribute("id", "" + i); // 给 company 节点添加子节点并赋值 elements.addContent(new Element("company_name").setText("name" + i)); elements.addContent(new Element("company_email").setText("name" + i + "@163.com")); // 给父节点list添加company子节点; root.addContent(elements); } XMLOutputter XMLOut = new XMLOutputter(); // 输出company_list.xml文件; XMLOut.output(Doc, new FileOutputStream("company_list.xml")); } /** * 读取xml文档 * @throws IOException * @throws JDOMException */ public void ReadXMLDoc() throws IOException, JDOMException { SAXBuilder sb = new SAXBuilder();// 建立构造器 Document doc = sb.build(new FileInputStream("company_list.xml"));// 读入指定文件 Element root = doc.getRootElement();// 获得根节点 List list = root.getChildren();// 将根节点下的所有子节点放入List中 for (int i = 0; i < list.size(); i++) { System.out.println("---------------------------"); Element item = (Element) list.get(i);// 取得节点实例 String id = item.getAttribute("id").getValue();// 取得属性值 System.out.println("id-->" + id); Element sub1 = item.getChild("company_name");// 取得当前节点的字节点 String company_name = sub1.getText();// 取得当前节点的值 System.out.println("company_name-->" + company_name); Element sub2 = item.getChild("company_email"); String company_email = sub2.getText(); System.out.println("company_email-->" + company_email); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { JdomRWXML jdomRWXML = new JdomRWXML(); System.out.println("--------BuildXMLDoc----------"); jdomRWXML.BuildXMLDoc(); System.out.println("--------ReadXMLDoc----------"); jdomRWXML.ReadXMLDoc(); } catch (Exception e) { e.printStackTrace(); } } }
输出结果:
--------BuildXMLDoc---------- --------ReadXMLDoc---------- --------------------------- id-->0 company_name-->name0 company_email-->name0@163.com --------------------------- id-->1 company_name-->name1 company_email-->name1@163.com --------------------------- id-->2 company_name-->name2 company_email-->name2@163.com --------------------------- id-->3 company_name-->name3 company_email-->name3@163.com --------------------------- id-->4 company_name-->name4 company_email-->name4@163.com
然后我们在项目根目录下会发现多了一个company_list.xml文件,内容如下:
name0 name0@163.com name1 name1@163.com name2 name2@163.com name3 name3@163.com name4 name4@163.com