【JAVA】JDOM对XML编程

来源:互联网 发布:淘宝上卖铁观音 编辑:程序博客网 时间:2024/05/08 15:51

写XML文件

JDOM只是一种适合Java程序员来使用的Java XML解析器。Java + XML = JDOM ! http://jdom.org可以下载JDOM的最新版本。

导入jdom-2.0.5.jar 到项目中。

package javaChapter2;  import java.io.FileWriter;import java.util.*;import org.jdom2.*;import org.jdom2.input.SAXBuilder;import org.jdom2.output.Format;import org.jdom2.output.XMLOutputter;  public class JDomWriter{    public static void main(String[] args) throws Exception {    Document doc = new Document();  Element root = new Element("学生列表");  doc.setRootElement(root); //根元素    Element stu = new Element("学生"); //创建学生元素  stu.setAttribute("sno","95001");  stu.addContent(new Comment("第一名"));//注释    Element name = new Element("姓名");  name.addContent("zhou");    root.addContent(stu); //将stu 姓名 元素添加至 root  学生列表  元素中  stu.addContent(name);   stu.addContent(new Element("年龄").addContent("22"));    Element stu2 = new Element("学生");  stu2.setAttribute("sno","85000");  stu2.addContent(new Element("姓名").addContent("lisi"));  root.addContent(stu2);    XMLOutputter outputter = new XMLOutputter();  Format format = outputter.getFormat(); //获取已有的格式  format.setEncoding("GB2312");//设置XML编码  format.setIndent("  "); //设置XML缩进空格数,并且每个元素单独占一行  outputter.setFormat(format); //设置outputter格式  outputter.output(doc, new FileWriter("d:\\my.dxml")); //输出到文件     }  }  

结果 



Jdom 解析 XML 

 导入jdom-2.0.5.jar       .. 。。建立 students.xml 文件

<?xml version="1.0" encoding="UTF-8"?><students><student ID="001"><name>lisi</name><sex>men</sex></student><student ID="002"><name>wangwu</name><sex>men</sex></student></students>

package com.jdom;import java.io.FileOutputStream;import java.io.IOException;import java.util.Iterator;import java.util.List;//下面是引用到JDOM中的类import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.JDOMException;import org.jdom2.input.SAXBuilder;import org.jdom2.output.XMLOutputter;public class Jdomtest {  public Jdomtest(){   String xmlpath="src/students.xml";   //注意路径。。           SAXBuilder builder=new SAXBuilder(); //指定使用的解析器   try {    Document doc=builder.build(xmlpath);//得到document    Element students=doc.getRootElement();  //得到根元素     List studentlist=students.getChildren("student");  //得到元素(节点)的集合    for (Iterator iter = studentlist.iterator(); iter.hasNext();)     {      Element student = (Element) iter.next();      String ID=student.getAttributeValue("ID"); //取得元素student的属性名为“ID”的属性值      System.out.print(ID+"   ");      String name=student.getChildTextTrim("name"); //取得元素的子元素(为最低层元素)的值      System.out.println(name);            }  //for(int i=0;I<booklist.size();I++)              // {   Element student=(Element)studentlist.get(i); } 读取student的所有子节点中的第一个子节点            XMLOutputter outputter=new XMLOutputter();  //保存Document的修改到XML文件中     outputter.output(doc,new FileOutputStream(xmlpath));         } catch (JDOMException e) {     e.printStackTrace();    } catch (IOException e) {     e.printStackTrace();    }   }   public static void main(String[] args) {   new Jdomtest();   } }


        

 基本流程:
一.建立解析器
  //SAXBuilder sb=new SAXBuilder();
    返回Document文档
  //Document doc=sb.build(new FileInputStream(XmlFname));
二.DOM处理
  元素基于Content类.Element类操作同Dom.
三.DOM结果处理(输出/保存)
  Format fo=Format.getCompactFormat();//取得输出格式Format
  //fo.setEncoding("GB2312");
  XMLOutputter outputter=new XMLOutputter(fo);
  FileWriter write=new FileWriter(XmlFname);//这里可以是PrintWriter形式的(任何Writer流).
  outputter.output(doc,write/*Writer流,见构造函数*/);
  write.close();