码迷,mamicode.com
首页 > 其他好文 > 详细

dom4j xml的生成与解析

时间:2015-07-01 00:57:46      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

这两天在一直写数据接口,涉及到数据xml文件的生成与解析,在此,简单地记录和总结一下。

其实,生成与解析xml文件主要还是运用java中的I/O文件的知识点。

现在大多数的人写xml文件的生成和解析都使用dom4j,它确实比传统的w3c的写法要简单方便的多。就像jQuery相比于js的优点显而易见一般。

dom4j 简介:   

       dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。Sun的JAXM也在用dom4j, Hibernate用它来读写配置文件。

dom4j创建文档元素的写法要简单的多,如:

 Document document = DocumentHelper.createDocument();  //创建文档   
        Element employees=document.addElement("employees");   

 Element employee=employees.addElement("employee");    
        Element name= employee.addElement("name");   //添加子节点 
        name.setText("ddvip"); //添加Text值;例:<a>abc</a> 
        name.setAttributeValue("sa", "sa"); //添加属性;例:<a item="item"></a> 

dom4j的写法更加地灵活,更符合我们的思维逻辑。它创建完一个元素后,如果想为其添加子元素的话,直接在元素中添加即可,逻辑关系更加清晰、直接。避免了传统写法添加多个子标签的繁琐。

dom4j中文件的写出也比较简单。大题分三步:

Writer fileWriter=new FileWriter(fileName);    
            XMLWriter xmlWriter=new XMLWriter(fileWriter);    
            xmlWriter.write(document);   //写入文件中 
            xmlWriter.close();   

1,新建一个普通的文件流,文件路径作为参数。

2,新建一个xml文件流,普通文件流作为参数。

3,调用xml文件流的write方法将上面创建的文档写出,文档作为参数。

4,关闭文件流。

下面再来了解一下xml文档的解析写法;

1,根据文件路径生成文件

 File inputXml=new File(fileName);    

2,新建dom4j自己的saxReader 对象
        SAXReader saxReader = new SAXReader();    
3,调用saxReader对象的read方法读取文件
            Document document = saxReader.read(inputXml);   //把文件读入到文档 

4,获取文档根元素
            Element employees=document.getRootElement();   //获取文档根节点 

5,迭代获取根元素下的子元素

Iterator<Element> oneLevelElementItor = messageElement.elementIterator();
6,处理多层标签嵌套
 while(oneLevelElementItor.hasNext()){
            Element e1 = oneLevelElementItor.next();
            System.out.println("Message子元素:"+e1.getName());
            //获取User元素下的子元素
            Iterator<Element> twoLevelElementItor = e1.elementIterator();
            while(twoLevelElementItor.hasNext()) {
                Element e2 = twoLevelElementItor.next();
                System.out.println("User子元素:"+e2.getName());
                userAttrMap.put(e2.getName(), e2.getText());
                
                //获取Address下的子元素
                if("Address".equals(e2.getName())) {
                    Iterator<Element> threeLevelElementItor = e2.elementIterator();
                    while(threeLevelElementItor.hasNext()) {
                        Element e3 = threeLevelElementItor.next();
                        System.out.println("Address子元素:"+e3.getName());
                        addressAttrMap.put(e3.getName(), e3.getText());
                    }
                    
                }
            }
            
        }

 

 

 7,获取根元素下子元素信息

Element childElement=employees.element("name");

childElement.getName();

childElement.getText();

childElement.getAttributeCount();

childElement.getAttributeValue();

当然也有对应的set方法

根元素和子元素都是元素,所以它们的操作方式基本相同。

 

dom4j xml的生成与解析

标签:

原文地址:http://www.cnblogs.com/duanduan/p/4612180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!