JDOM入门实例:读取与创建xml文档

来源:互联网 发布:android实现java线程池 编辑:程序博客网 时间:2024/04/25 15:54

jdom.jar 下载地址 http://download.csdn.net/detail/maxuyang1987/4398947


1.入门实例一:xml文件的读取与修改

xml文件:library.xml

<?xml version="1.0" encoding="UTF-8"?><books>   <book email="abc@163.com">     <name>jdom</name>     <price>60.0</price>  </book></books>

代码实例:JDomParse.java

package books.test;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:\\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会发现它已经变为:

<?xml version="1.0" encoding="UTF-8"?><books>   <book email="abc@163.com">     <name>edit-jdom</name>     <price>60.0</price>  </book></books>

2.入门实例二:XML文件的创建与读取

代码实例:JdomRWXML.java


package books.test;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();        }    }}