当前位置:编程学习 > XML/UML >>

java 操作XML

本文使用jdom.jar跟jaxen-1.1.1.jar工具来进行XML的写入跟解析:
 
 
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());   
    }  
  
  
}  

 

 
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,