XML的四种解析方式之JDOM&DOM4J
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")); } } } 执行代码的结果如下所示:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |