写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();