使用JDOM操作XML

  JDOM介绍

  JDOM是使用Java语言编写的,用于读写及操作XML的一套组件,Jdom同时具有DOM修改文件的优点和SAX读取快速的优点。 

  JDOM的使用

  首先下载JDOM的JAR包,本文使用的是jdom-2.0.5,下载地址:http://download.csdn.net/detail/onroads/9719611

  在工程目录下新建一个lib文件夹,将下载的jar包中的jar文件拷贝到lib文件夹下  

    

  右键项目Build Path->Configure Build Path...,如下图:

    

  选择Libraries->Add JARs...,添加lib文件夹中的jdom-2.0.5.jar

    

  使用JDOM

  JDOM主要的操作类如下表:

 

 创建XML文件:

        Map<String, String> map = new HashMap<>();
        map.put("小明", "xiaoming@163.com");
        map.put("翠花", "cuihua@163.com");
        
        Document document = null;    
        //定义根节点
        Element addresslist = new Element("addresslist");
        //声明一个Document对象
        document = new Document(addresslist);
        
        Set<Entry<String, String>> set = map.entrySet();
        Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
        int i=0;
        while(iterator.hasNext()){
            Entry<String, String> mapentry = iterator.next();
            //定义节点
            Element linkman = new Element("linkman");
            Element name = new Element("name");
            Element email = new Element("email");
            //定义属性
            Attribute id = new Attribute("id", ++i+"");
            //设置节点内容
            name.setText(mapentry.getKey());
            email.setText(mapentry.getValue());
            //将属性添加到节点
            name.setAttribute(id);
            //连接节点
            linkman.addContent(name);
            linkman.addContent(email);
            addresslist.addContent(linkman);
        }

        //用来输出XML文件
        XMLOutputter out = new XMLOutputter();
        //设置输出编码
        out.setFormat(out.getFormat().setEncoding("GBK"));
        
        try{
            //输出XML文件
            out.output(document, new FileOutputStream("D:"+File.separator+"JdomXML.xml"));
        }catch(Exception e){
            e.printStackTrace();
        }

  生成的xml文件如下:

<?xml version="1.0" encoding="GBK" standalone="no"?>
<addresslist>
    <linkman>
        <name index="1">小丽</name>
        <email>xiaoli@163.com</email>
    </linkman>
    <linkman>
        <name index="2">李雷</name>
        <email>lilei@163.com</email>
    </linkman>
</addresslist>

 读取刚才生成的xml文件:

 1         SAXBuilder sbBuilder = new SAXBuilder();
 2         Document doc = null;
 3         try {
 4             //找到Document
 5             doc = sbBuilder.build("D:"+File.separator+"output.xml");
 6             //读取根元素
 7             Element stu = doc.getRootElement();
 8             //得到全部linkman子元素
 9             List list = stu.getChildren("linkman");
10             
11             for(int i=0;i<list.size();i++){
12                 Element element = (Element) list.get(i);
13                 String name = element.getChildText("name");
14                 String index = element.getChild("name").getAttributeValue("index");
15                 String email = element.getChildText("email");
16                 System.out.print("<name" + " index="+index+">" + name+"</name>");
17                 System.out.println("<email>" + email+"</email>");
18             }
19             
20         } catch (Exception e) {
21             
22             e.printStackTrace();
23         }

   解析结果:

  

 

posted @ 2016-12-23 15:56  风雪夜归人shen  阅读(4706)  评论(0编辑  收藏