JDOM解析XML

来源:互联网 发布:js缺少对象,怎样调试 编辑:程序博客网 时间:2024/06/01 08:15

    XML(eXtensibleMarkupLanguage)——可扩展标记语言,用户可以自己定义语言标记,只需要有开启和关闭标签即可。

    在开发过程中,开发人员每天都在使用XML文件,但是如何操作读取这些文件呢?相关的技术有很多,例如传统的Dom、SAX和后来的JDOM、Dom4j等。 其实最先接触到的还是Dom4j,但是后来在学习中发现了JDOM,相比之下这两者还是挺相似的。下面就简单介绍一下JDOM。


    JDOM主要是利用纯java技术对XML文档实现解析、生成、序列化以及多种操作的一个API函数。在 JDOM 中,XML 元素就是 Element 的实例,XML 属性就是 Attribute 的实例,XML 文档本身就是 Document 的实例。  下面是具体的操作:

    首先需要准备jdom相关的jar包

    jdom-jar下载地址:http://www.jdom.org/dist/binary/

    其次需要引入相关jar包,这里我用的是jdom-1.1.3



一、使用JDOM方式创建XML文件

public class CreateXMLByJDOM {public static void main(String[] args ){//创建Document实例Document document = new Document();//创建根元素ContactList,并创建属性Element root = new Element("ContactList").setAttribute(new Attribute("Company","Acompany"));//根元素添加到Document对象中document.addContent(root);//创建元素LinkManElement contactPerson = new Element("LinkMan");//添加元素到根元素中root.addContent(contactPerson);//创建子元素contactPerson.addContent(new Element("name").setText("雨落天涯")) .addContent(new Element("company").setText("创宇集团")) .addContent(new Element("Telphone").setText("13745628456")) .addContent(new Element("Address") .addContent(new Element("Street").setText("朝阳街")) .addContent(new Element("City").setText("北京市"))); //使用XMLOutputter生产xml文档XMLOutputter xmlOut = new XMLOutputter();try{//调用XMLOutputter对象的output方法生成xml文档 xmlOut.output(document,new FileOutputStream("contact.xml"));System.out.println("Writing XML successed!");}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();}}}


    生成 的XML文件 :


二、使用JDOM方式读取XML文件

    先创建sample.xml文件


读取XML文件如下:

public class Sample {public static void main(String[] args) throws Exception {//创建一个SAXBuilder对象 SAXBuilder sb = new SAXBuilder();  //把整个文档当成一个对象Document doc = sb.build(Sample2.class.getClassLoader().getResource("sample.xml"));  //root拿到这个文档的根对象Element root = doc.getRootElement(); System.out.println(root);//拿到根对象的HD/disk节点List list = XPath.selectNodes(root, "/HD/disk");System.out.println(list.size());////遍历根元素的子元素集合(即遍历list元素)for (int i = 0; i < list.size(); i++) {Element disk_element = (Element) list.get(i);String name = disk_element.getAttributeValue("name");String capacity = ((Text) XPath.selectSingleNode(disk_element,"//disk[@name='" + name + "']/capacity/text()")).getTextNormalize();String directories = ((Text) XPath.selectSingleNode(disk_element,"//disk[@name='" + name + "']/directories/text()")).getTextNormalize();String files = ((Text) XPath.selectSingleNode(disk_element,"//disk[@name='" + name + "']/files/text()")).getTextNormalize();//输出显示XML数据System.out.println("磁盘信息:");System.out.println("分区盘符:" + name);System.out.println("分区容量:" + capacity);System.out.println("目录数:" + directories);System.out.println("文件数:" + files);System.out.println("-----------------------------------");}}<span style="font-family:FangSong_GB2312;">}</span>


最终显示结果



三、JDOM与DOM4j的比较 :


   JDOM与DOM4j都是面向java语言开发的,JDOM是第一个java特定模型,所以在很多性能上很明显就比不上后来的DOM4j。例如第一,JDOM仅使用具体类而不使用接口。这在某些方面简化了API,但同时限制了灵活性。但DOM4J大量的使用了接口和抽象基本类方法。第二、JDOM自身不包含解析器,通常使用sax2解析器解析和验证输入XML文档。


2 1
原创粉丝点击