您的位置:首页 > 其它

DOM4J学习

2007-01-08 12:21 375 查看
要用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)


+ " 毫秒");


}


}



简单万岁!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: