那么如果说现在有一个工具既可以发挥出SAX解析的优点,也可以返回出DOM解析的优点,那么这样的工具一定是非常受
欢迎的,最早的时候有过一个JDOM的开发工具,但是这个JDOM只是对DOM和SAX进行了简单的操作封装,并没有对一些数
据的保存算法进行优化,所以后来被DOM4j工具所取代,在现在所有的开发框架之中都一定会存在有DOM4j的开发包。
但是如果要想使用DOM4J,那么首先必须要清楚使用那些类可以完成XML文件的操作;但是这个包属于第三方的开发程序,
所以需要将这个开发包配置到项目的CLASSPATH中。
输出 在java代码中的写法:
//1定义输出的数据内容
String ids[]=new String[]{"001","001"};
String names[]=new String[]{"春哥","罗哥"};
String ages[]=new String[]{"88","25"};
String tels[]=new String[]{"10086","10010"};
//2所有的XML文件必须都存在有一个文档。
Document document =DocumentHelper.createDocument();
//3向document中追加并创建元素
Element contractElement = document.addElement("contract");
//4利用循环进行子元素的追加
for(int x=0;x<ids.length;x++)
{
//在contract节点下创建新的子节点
Element memberElement=contoactElement.addElement("member");
//在member元素中增加属性内容
memberElement.addAttribute("id",ids[x]);
//在member元素下创建name元素
Element nameElement = memberElement.addElement("name");
nameElement .setText(names[x]);
//在member元素下创建age元素
Element ageElement= memberElement.addElement("age");
ageElement.setText(ages[x]);
//在member元素下创建tel元素
Element telElement= memberElement.addElement("tel");
telElement.setText(tels[x]);
}
//5要准备输出,首先要设置输出的格式化
OutputFormat format=OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
//6进行文件输出 文件的路径根据自己需要定义。如下是E盘,mytest文件夹的contract.xml文件
File file =new File("e:"+ File.separator + "mytest" + File.separator +"contract.xml");
XMLWriter out = new XMLWriter(new FileOutputStream(file),format);
out.write(document);
out.close();
//此时如果选择紧凑型输出,结果会很混乱,所以我们需要改用为漂亮型输出,
使用此类模式实现的输出操作,要比直接使用DOM简单的多。
读取:
如果要想进行XML文件的读取,不需要做什么思考,肯定使用SAX读取是最方便的,所以在DOM4j中特别安置了SAX解析器
专门读取所有的XML文件;
//1设置要读取的文件路径
File file =new File("e:"+ File.separator + "mytest" + File.separator +"contract.xml");
//2定义SAX解析器读取
SAXReader sax=new SAXReader();
//3将数据转化为Document接口对象
//读取整个文档数据
Document document=sax.read(file);
//4取出根元素
Element rootElement=document.getrootElement();
//测试取出的根元素
sysout(rootElement.getName());
//5取出所有的member子元素
Iterator<Element> iter=rootElement.elementIterator("member");
While(iter.hasNext())
{
Element member=iter.next();
Sysout("ID="+ member.attributeValue("id"));
Sysout("name="+ member.member.ElementTetx("name"));
}
现在通过读取操作就可以非常清楚的发现,利用DOM4j工具实现的读取太方便了。这也就是为什么所有的开源框架都用的
DOM4j来读取XML配置文件的原因
DOM4j=DOM 可修改的特点+SAX 读取大文件的特点