加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML的四种解析方式之JDOM&DOM4J

发布时间:2020-12-15 23:04:57 所属栏目:百科 来源:网络整理
导读:JDOM 所谓的JDOM=DOM的可修改性+SAX的文件读取性。 JDOM本身是一个免费的开源组件,可以直接进行下载。JDOM是使用Java语言编写的用于读、写、操作XML的一套组件。可以直接从http://www.jdom.org/上下载JDOM的开发包。 利用JDOM写文件的代码如下所示:(Write

JDOM

所谓的JDOM=DOM的可修改性+SAX的文件读取性。JDOM本身是一个免费的开源组件,可以直接进行下载。JDOM是使用Java语言编写的用于读、写、操作XML的一套组件。可以直接从http://www.jdom.org/上下载JDOM的开发包。


利用JDOM写文件的代码如下所示:(WriteXML.java的内容)

packageorg.lxh.xml.jdom;

importjava.io.*;

importorg.jdom.*;

importorg.jdom.output.*;

publicclassWriterXMLthrowsException{

publicstaticvoidmain(Stringargs[]){

Elementaddresslist=newElement("addresslist");

Elementlinkman=newElement("linkman");

Elementname=newElement("name");

Elementemail=newElement("email");

Attributeid=newAttribute("id","lxh");

Documentdoc=newDocument(addresslist);//定义Document对象。

name.setText("李兴华");

name.setAttribute(id);//将属性设置到元素之中。

email.setText("mldnqa@163.com");

linkman.addContent(name);//设置关系。

linkman.addContent(email);

addresslist.addContent(linkman);

XMLOutputterout=newXMLOutputter();

out.setFormat(out.getFormat().setEncoding("GBK")); //表示的是设置编码。

out.output(doc,newFileOutputStream(new

File("D:"+File.separator+"address.xml")));

}

}

执行程序后,产生的address.xml中的内容如下所示:

用浏览器打开此XML文件的内容如下所示:

利用JDOM读取文件的内容如下所示:(ReadXML.java)

packageorg.lxh.xml.jdom;

importjava.io.*;

importjava.util.*;

importorg.jdom.*;

importorg.jdom.input.*;

publicclassReadXML{

publicstaticvoidmain(Stringargs[])throwsException{

SAXBuilderbuilder=newSAXBuilder();

Documentread_doc=builder.build(newFile("D:"+File.separator+"address.xml"));

Elementroot=read_doc.getRootElment();//取得根

Listlist=root.getChildren("linkman");

for(intx=0;x<list.size();x++){

Elemente=(Element)list.get(x);

Stringname=e.getChildText("name");

Stringid=e.getChild("name").getAttribute("id").getValue();

Stringemail=e.getChildText("email");

System.out.println("-----------联系人-----------");

System.out.println("姓名:"+name+",编号:"+id);

System.out.println("EMAIL:"+email);

System.out.println("------------------------------");

System.out.priintln();

}

}

}

执行此段代码的结果如下所示:


小结:使用JDOM可以方便的实现XML文件的读取和输出。JDOM=SAX+DOM。

DOM4J

DOM4J也是一组XML操作的组件包,主要用来读写XML文件,由于DOM4J性能优异、功能强大、易用性等特点所以现在已经被广泛的应用开来,例如:Hibernate、Spring框架中都使用了DOM4J进行XML的解析操作,如果要想取得DOM4J的开发包,可以直接登录SourceForge的首页(http://sourceforge.net/projects/dom4j/files/)下载。

通过DOM4J生成XML文件。【首先将DOM4J的开发包配置到classpath之中。】

Document对象创建的时候使用DocumentHelper这个类来完成。

在Dom4J之中输出操作靠的是OutputFormat类来完成。

如果现在要想输出则可以使用XMLWriter。

DOM4JWriter.java的内容如下所示:

packageorg.skewrain.xml.dom4j;

importjava.io.*;

importorg.dom4j.*;

importorg.dom4j.io.*;

publicclassDOM4JWriter{

publicstaticvoidmain(Stringargs[])throwsException{

Documentdoc=DocumentHelper.createDocument();

Elementaddresslist=doc.addElement("addresslist");

Elementlinkman=addresslist.addElement("linkman");

Elementname=linkman.addElement("name");

Elementemail=linkman.addElement("email");

name.setText("李兴华");

email.setText("email");

OutputFormatformat=OutputFormat.createPrettyPrint();

format.setEncoding("GBK");

XMLWriterwirter=newXMLWriter(newFileOutputStream(newFile("d:"+File.separator+"address.xml") ),format);

writer.wirte(doc);//进行输出

writer.close();

}

}

生成的XML文件如下所示:


DOM4J.java的代码内容如下所示:

packageorg.lxh.xml.dom4j;

importjava.io.*;

importjava.util.*;

importorg.dom4j.*;

importorg.dom4j.io.*;

publicclassDOM4JReader{

publicstaticvoidmain(Stringargs[])throwsException{

Filefile=newFile("d:"+File.separator+"output.xml");

SAXReaderreader=newSAXReader();

Documentdoc=reader.read(file);//读取XML文件

Elementroot=doc.getRootElement();//取得根节点

Iteratoriter=root.elementIterator();

while(iter.hasNext()){

Elementlinkman=(Element)iter.next();

System.out.println("姓名:"+linkman.elementText("name"));

System.out.println("邮箱:"+linkman.elementText("email"));

}

}

}

执行代码的结果如下所示:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读