leisure

JAVA - exceed,helloworld
随笔 - 50, 文章 - 0, 评论 - 11, 引用 - 0
数据加载中……

using dom4j to handle xml 使用dom4j操作xml

dom4j是一个非常简单的开源项目。该类库底层主要借助了Java集合框架,完美地支持对XML,XPath和XSLT的操作!

xml示例:
<?xml version="1.0" encoding="gbk"?>
<games>
    
<game ID="1">
        
<name>极品飞车OL</name>
        
<type>网络游戏</type>
        
<score>85</score>
    
</game>
    
<game ID="2">
        
<name>仙剑奇侠传5</name>
        
<type>单机游戏</type>
        
<score>90</score>
    
</game>
    
<game ID="3">
        
<name>地下城与勇士</name>
        
<type>网络游戏</type>
        
<score>75</score>
    
</game>
</games>

一、读取
        SAXReader reader = new SAXReader();
        File file 
= new File("d:\\games.xml");
        Document doc 
= reader.read(file);
SAXReader支持多种对象的读取,包括File,Reader,InputStream,URL,InputSource。

二、查找节点
    1、通过id查找节点:
        Node node = doc.elementByID("2");
        
// <game ID="2"><name>仙剑奇侠传5</name><type>单机游戏</type></game>        
        System.out.println(node.asXML());     

    2、通过XPath查找节点
        Node node = doc.selectSingleNode("/games/game[1]/name");    // game[1]获取的是第1个节点
        System.out.println(node.getText());                                          // 极品飞车OL

        List nodeList = doc.selectNodes("/games/game[score>80]/name");    // 所有分数大于80分的游戏节点下的name节点
        
// 极品飞车OL 仙剑奇侠传5 
        for(int i = 0; i < nodeList.size(); i++) {
            Node node 
= (Node)nodeList.get(i);
            System.out.println(node.getText());
        }

    3、获取父节点
        Node node = doc.elementByID("1");
        System.out.println(node.getParent().getName());

三、移除
    1、移除节点
        Element element = doc.elementByID("1");
        Node typeNode 
= element.selectSingleNode("type");
        element.remove(typeNode);
        
// <game ID="1"><name>极品飞车OL</name><score>85</score></game>
        System.out.println(element.asXML());

    2、移除属性
        Element element = doc.elementByID("1");
        System.out.println(element.attributeValue(
"ID"));                    // 1
        System.out.println(element.remove(element.attribute("ID")));    // true 移除成功 false 移除失败
        System.out.println(element.attributeValue("ID"));                    // null

四、添加与设置
由于添加(add)和设置(set)方法与第三点移除类似。请稳步直接看API。

五、输出xml
        OutputFormat format = new OutputFormat();
        format.setEncoding(
"gbk");            // 设置xml文档头编码 <?xml version="1.0" encoding="gbk"?>
        XMLWriter writer = new XMLWriter(new FileWriter(new File("d:\\games2.xml")), format);
        
// write方法可接受Node、Element、Document、Attribute等对象
        writer.write(doc);
        writer.close();                            
// 必须close才会生成文件

六、CDATA
        Element element = new BaseElement("game");
        element.add(DocumentHelper.createCDATA(
"战神"));        // 添加 CDATA数据
        System.out.println(element.asXML());
        element.setText(element.getText());                                
// 清除 CDATA标志
        System.out.println(element.asXML());

参考:
dom4j api
XPath 教程

posted on 2011-09-20 00:16 leisure 阅读(485) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航: