DOM4J学习

    要用SOA必须熟悉XML、SOAP等等。XML解析中DOM4J用得比较广泛,而且性能也很好,由于现在没有要跨语言的需求,所以就学DOM4J吧。
    在这里先简单得学习一下在JAVA中怎么创建和读取XML文件。

         首先是下 dom4j,需要dom4j-x.x.x.jar,目前最高版本是dom4j-1.6.1.jar。

       先来用java创建XML:
package  kompakar.tutorial.soap.xml;

import  java.io.FileWriter;
import  java.io.IOException;
import  java.util.Iterator;

import  org.dom4j.Document;
import  org.dom4j.DocumentException;
import  org.dom4j.DocumentHelper;
import  org.dom4j.Element;
import  org.dom4j.io.XMLWriter;

public   class  DOM4JWriter  {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        DOM4JWriter dom4jWriter 
= new DOM4JWriter();
        
        
//create Document
        Document document = dom4jWriter.createDocument();

        
try {
            dom4jWriter.writeDocument2File(document);

            Document documentStr 
= dom4jWriter
                    .StringToXML(
"<China>I Love!</China>");
            dom4jWriter.writeDocument2XML(documentStr);
        }
 catch (IOException e) {
            e.printStackTrace();
        }
 catch (DocumentException e) {
            e.printStackTrace();
        }

        
        
//find element
        Element element = dom4jWriter.findElement(document);
        System.out.println(element.getText());
    }


    
/*
     * Create a XML Document
     
*/

    
public Document createDocument() {
        Document document = DocumentHelper.createDocument();

        //root element
        Element root = document.addElement("persons");

        Element author1 = root.addElement("person");
        author1.addAttribute("Name", "康博嘉");
        author1.addAttribute("Age", "25");
        author1.addAttribute("Country", "China");
        author1.addText("I am great!");

        Element author2 = root.addElement("person");
        author2.addAttribute("Name", "GIGI");
        author2.addAttribute("Age", "25");
        author2.addAttribute("Country", "China");
        author2.addText("I am great!too!");

        document.setXMLEncoding("gb2312");
        return document;

    }


    
/*
     * Create a XML document through String
     
*/

    
public Document StringToXML(String str) throws DocumentException {
        Document document 
= DocumentHelper.parseText(str);
        
return document;
    }


    
public Element findElement(Document document) {
        Element root 
= document.getRootElement();
        Element legend 
= null;
        
for (Iterator i = root.elementIterator("person"); i.hasNext();) {
            legend 
= (Element) i.next();
        }

        
return legend;
    }


    
/*
     * Write a XML file
     
*/

    
public void writeDocument2File(Document document) throws IOException {
        FileWriter out 
= new FileWriter("./Dom2jSample.xml");
        document.write(out);
        out.close();
 
    }


    
/*
     * Write a XML format file
     
*/

    
public void writeDocument2XML(Document document) throws IOException {
        XMLWriter writer 
= new XMLWriter(new FileWriter("./Dom2jSampleStr.xml"));
        writer.write(document);
        writer.close();
 
    }


}


    你可以在类文件夹下得到两个文件: Dom2jSample.xml Dom2jSampleStr.xml

    很简单吧,再学怎么读取。

    首先创建一个XML文件
<? xml version="1.0" encoding="gb2312" ?>
< books >

    
< book  email  = "benewu@gmail.com" >
        
< name > 世界是平的 </ name >
        
< price > 88.20 </ price >
    
</ book >

    
<book email = "benewu@gmail.com">
        
<name>天龙八部</name>
        
<price>45.90</price>
    
</book>

</books>
 
把这个文件命名为data_10k.xml放在刚才那两个XML文件生成的同一个目录下。

读取的源代码如下:

package  kompakar.tutorial.soap.xml;

import  java.io.File;
import  java.util.Iterator;

import  org.dom4j.Document;
import  org.dom4j.Element;
import  org.dom4j.io.SAXReader;

public   class  DOM4JReader  {
    
public static void main(String arge[]) {
        
long lasting = System.currentTimeMillis();
        
try {
            File f 
= new File("./data_10k.xml");
            SAXReader reader 
= new SAXReader();
            Document doc 
= reader.read(f);
            
// 取根节点
            Element root = doc.getRootElement();
            Element foo;
            
// 遍历节点
            for (Iterator i = root.elementIterator("book"); i.hasNext();) {
                foo 
= (Element) i.next();
                System.out.println(
"书名 : " + foo.elementText("name"));
                System.out.println(
"价格 : " + foo.elementText("price"));
            }

        }
 catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(
"运行时间:" + (System.currentTimeMillis() - lasting)
                
+ " 毫秒");
    }

}


    简单万岁!
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值