using dom4j to handle xml 使用dom4j操作xml

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 教程

你可能感兴趣的:(using dom4j to handle xml 使用dom4j操作xml)