XML入门之二:Jdom2的写入和读取操作

来源:互联网 发布:知美术馆官网 电话 编辑:程序博客网 时间:2024/06/02 00:05



注:

我用的jdom版本是jdom-2.0.3,所以包名称对应的都是jdom2.*

如果用的是1.x 包名称对应的是jdom.*


package com.rt.jdom;import java.io.*;import java.util.List;import org.jdom2.*;import org.jdom2.output.*;import org.jdom2.input.*;public class JDOM_Demo {public static void main(String[] args) {jdomWriter();//1.先写入try {jdomReader();//2.后读取} catch (Exception e) {e.printStackTrace();}}public static void jdomWriter(){//一:顶级节点Element topTree = new Element("topTree");Document doc = new Document(topTree);//将顶级节点(唯一一个)设置进Document        Comment ttComment = new Comment("测试将数据从程序输出到XML中");//创建注释        topTree.addContent(ttComment);        //二:子节点1Element subTree1 = new Element("subTree");Attribute ab1 = new Attribute("ab","attributeOfsubTree1");//子节点属性subTree1.setAttribute(ab1);Element object1 = new Element("object1");//子节点信息Element object2 = new Element("object2");Element object3 = new Element("object3");object1.setText("valueOfObj1");object2.setText("valueOfObj2");object3.setText("valueOfObj3");topTree.addContent(subTree1);//与上级节点(顶级节点)关系subTree1.addContent(object1);subTree1.addContent(object2);subTree1.addContent(object3);//三:子节点2Element subTree2 = new Element("subTree");Attribute ab2 = new Attribute("ab","attributeOfsubTree2");//子节点属性subTree2.setAttribute(ab2);Element object4 = new Element("object1");//子节点信息Element object5 = new Element("object2");Element object6 = new Element("object3");object4.setText("valueOfObj4");//!!!注意不能再用object1对象,否则会出现不能加入上级节点的错误object5.setText("valueOfObj5");object6.setText("valueOfObj6");topTree.addContent(subTree2);//与上级节点(顶级节点)关系subTree2.addContent(object4);subTree2.addContent(object5);subTree2.addContent(object6);//四:将上述内容写入XMLXMLOutputter out = new XMLOutputter();out.setFormat(out.getFormat().setEncoding("GBK"));try {out.output(doc, new FileOutputStream(new File("e:/jdom_demo1.xml")));} catch (Exception e) {e.printStackTrace();}}public static void jdomReader() throws Exception{SAXBuilder builder = new SAXBuilder();Document read_doc = builder.build(new File("e:/jdom_demo1.xml"));Element root = read_doc.getRootElement(); //取得根节点List<?> list = root.getChildren("subTree");for(int i=0;i<list.size();i++){Element e = (Element)list.get(i);//取得子节点String obj1 = e.getChildText("object1");String obj2 = e.getChildText("object2");String obj3 = e.getChildText("object3");System.out.println("No."+i);System.out.println("object1=> "+obj1);System.out.println("object2=> "+obj2);System.out.println("object3=> "+obj3);System.out.println("---------------");}}}







生成的XML如下:

<topTree>
<!-- 测试将数据从程序输出到XML中 -->
<subTree ab="attributeOfsubTree1">
<object1>valueOfObj1</object1>
<object2>valueOfObj2</object2>
<object3>valueOfObj3</object3>
</subTree>
<subTree ab="attributeOfsubTree2">
<object1>valueOfObj4</object1>
<object2>valueOfObj5</object2>
<object3>valueOfObj6</object3>
</subTree>
</topTree>