java 操作XML



java 操作XML。本文使用jdom.jar跟jaxen-1.1.1.jar工具来进行XML的写入跟解析:

[java]view plaincopyprint?
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import com.boxun.bean.TestBean;

/**
* xml读写测试
* @author admin_Hzw
*
*/
public class Test {

public static void main(String[] args) throws Exception {
List<TestBean> list = new ArrayList<TestBean>();
for (int i = 0; i < 10000; i++) {
TestBean t = new TestBean();
t.setId(i);
t.setName(“胡汉三”);
t.setTel(“110″);
list.add(t);
}
writeXml(list);
}

/**
* 写入xml
* @param list
* @throws Exception
*/
public static void writeXml(List<TestBean> list) throws Exception{
long wB = System.currentTimeMillis();
/*
* 所有的XML元素都是 Element 的实例。根元素也不例外:
*/
Element rootElement = new Element(“TestBean”);
Document myDocument = new Document(rootElement);//以根元素作为参数创建Document对象。一个Document只有一个根,即root元素。
for (int i = 0; i < list.size(); i++) {
TestBean t = list.get(i);
Element iElement = new Element(“B”);//创建 name 元素
iElement.setAttribute(“id”, t.getId()+”");
rootElement.addContent(iElement);//将name元素作为content添加到根元素
Element nameElement = new Element(“name”);//创建 name 元素
nameElement.addContent(t.getName());//将kingwong作为content添加到name元素
iElement.addContent(nameElement);//将name元素作为content添加到根元素
Element telElement = new Element(“tel”);//创建 name 元素
telElement.addContent(t.getTel());//将kingwong作为content添加到name元素
iElement.addContent(telElement);//将name元素作为content添加到根元素
}
String path = “C://temp//temp”+System.currentTimeMillis()+new Random().nextInt(100000) ;
//如果使用格式化,那么文件大小将会增大
//XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());
XMLOutputter xmlOut = new XMLOutputter();
File f = null;
try {
File ffFile = new File(“C://temp”);
if(!ffFile.exists()){
ffFile.mkdir();
}
f = new File(path+”.xml”);
if(f.exists()){
f.delete();
}
f.createNewFile();
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),”UTF-8″);
BufferedWriter writer=new BufferedWriter(write);
writer.write(xmlOut.outputString(myDocument));
writer.close();
long wN = System.currentTimeMillis();
System.out.println(“写入用时:”+(wN-wB)+”毫秒”);
readXMLContent(f) ; //解析
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 解析XML
* @param f
*/
@SuppressWarnings(“unchecked”)
public static void readXMLContent(File f) {
long xB = System.currentTimeMillis();
SAXBuilder builder = new SAXBuilder();
List<TestBean> listBean = new ArrayList<TestBean>();
try {
Document doc = builder.build(f);
Element rootEl = doc.getRootElement();
//获得所有子元素
List<Element> list = rootEl.getChildren();
for (Element el : list) {
TestBean t = new TestBean();
//获取id属性值
String id = el.getAttributeValue(“id”);
t.setId(Integer.valueOf(id));
//获取子元素文本值
String name = el.getChildText(“name”);
t.setName(name);
String tel = el.getChildText(“tel”);
t.setTel(tel);
listBean.add(t);
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
long xN = System.currentTimeMillis();
System.out.println(“解析用时:”+(xN-xB)+”毫秒”);
System.out.println(“——”+listBean.size());
}

}