【转】JDOM解析处理xml

转自http://qingbyqing.iteye.com/blog/978113

1.解析xml

Java代码   收藏代码
  1. package  com.qingbyqing.xmlParse;  
  2. import  java.io.IOException;  
  3. import  java.util.List;  
  4.   
  5. import  org.jdom.Attribute;  
  6. import  org.jdom.Document;  
  7. import  org.jdom.Element;  
  8. import  org.jdom.JDOMException;  
  9. import  org.jdom.input.SAXBuilder;  
  10.   
  11. /**  
  12.  * 解析xml  
  13.  * @author qingbyqing  
  14.  * @date 2011-3-29  
  15.  */   
  16. public   class  XmlPasreUtil {  
  17.   
  18.     Element root=null ;  
  19.     Document doc=null ;  
  20.       
  21.     /**  
  22.      * 获得根元素  
  23.      * @param fileName 用于指定的xml文件名  
  24.      * @return   
  25.      */   
  26.     public   Element getRoot(String fileName){  
  27.         //1.创建解析对象   
  28.         //2.解析对象调用build方法建立文档对象   
  29.         //3.文档对象获得根元素   
  30.         SAXBuilder builder = new  SAXBuilder( false );  
  31.         try  {  
  32.              doc = builder.build(fileName);  
  33.         } catch  (JDOMException e) {  
  34.               
  35.             e.printStackTrace();  
  36.         } catch  (IOException e) {  
  37.               
  38.             e.printStackTrace();  
  39.         }  
  40.            Element root = doc.getRootElement();  
  41.         return  root;  
  42.     }  
  43.     /**  
  44.      * 获取xml的所有信息  
  45.      * @param root 传入一个根元素对象  
  46.      */   
  47.     public   void  getElementInfo(Element root){  
  48.           
  49.         //遍历跟元素   
  50.         List<?> flist = root.getChildren("floor" );  
  51.        for ( int  i= 0 ;i<flist.size();i++){  
  52.                
  53.            Element floor =(Element) flist.get(i);  
  54.              
  55.            String level = floor.getAttributeValue("level" );  
  56.           p("第" +level+ "层" );  
  57.              
  58.           List<?> rlist = floor.getChildren("room" );  
  59.            
  60.           for ( int  j= 0 ;j<rlist.size();j++){  
  61.            
  62.              
  63.           Element room = (Element)rlist.get(j);  
  64.            
  65.             String id=room.getAttributeValue("id" );  
  66.               
  67.             String rep=room.getChild("represent" ).getText();  
  68.             String tel=room.getChild("telephone" ).getText();  
  69.             p("寝室编号:" +id+ "  负责人:" +rep+ "    寝室号码:" +tel);  
  70.               
  71.           }  
  72.        }  
  73.           
  74.           
  75.     }  
  76.       
  77.       
  78.     /**  
  79.      * @param args  
  80.      */   
  81.     public   static   void  main(String[] args) {  
  82.   
  83.             XmlPasreUtil pasre = new  XmlPasreUtil();  
  84.               
  85.             Element root=pasre.getRoot("I:\\xml\\flats.xml" );  
  86.             pasre.getElementInfo(root);  
  87.     }  
  88.       
  89.     public   void  p(String str){  
  90.         System.out.println(str);  
  91.     }  
  92.   
  93. }  


[img]

[/img]
2.创建xml

Java代码   收藏代码
  1. package  com.qingbyqing.xmlParse;  
  2.   
  3. import  java.io.FileWriter;  
  4. import  java.io.IOException;  
  5.   
  6. import  org.jdom.Attribute;  
  7. import  org.jdom.Comment;  
  8. import  org.jdom.Document;  
  9. import  org.jdom.Element;  
  10. import  org.jdom.output.Format;  
  11. import  org.jdom.output.XMLOutputter;  
  12.   
  13. /**  
  14.  * 创建一个xml  
  15.  * @author qingbyqing  
  16.  * @date 2011-3-29  
  17.  */   
  18. public   class  XmlCreateUtil {  
  19.        
  20.     Element root=null ; //跟元素   
  21.     Document doc=null ; //文档对象   
  22.        
  23.       
  24.     /**  
  25.      * 创建xml  
  26.      * @param ajax  
  27.      */   
  28.       
  29.     public   void  createRootElement(String[] ajaxs){  
  30.           
  31.         //1.根据数组创建跟元素   
  32.         //2.建立解释内容   
  33.         //3.建立子元素   
  34.           
  35.           
  36.          root = new  Element( "ajax" );  
  37.            
  38.          //建立解释内容   
  39.          Comment comment = new  Comment( "简单的xml示例" );  
  40.          root.addContent(comment);  
  41.            
  42.          //建立子元素   
  43.          for ( int  i= 0 ;i<ajaxs.length;i++){  
  44.              Element ajax = new  Element( "ajax" ); //子元素标签   
  45.              ajax.addContent(ajaxs[i]);//子元素内容   
  46.              Attribute id = new  Attribute( "id" , new  Integer(i).toString()); //子元素属性   
  47.                
  48.              ajax.setAttribute(id);  
  49.              root.addContent(ajax);  
  50.       
  51.          }            
  52.     }  
  53.       
  54.     public   void  outputXml(String fileName){  
  55.               
  56.          //1.根据跟元素创建文档   
  57.         //2.创建输出对象   
  58.         //3.创建输出格式对象   
  59.         //4.格式化文档   
  60.         //5.创建文件输出对象   
  61.         //6.输出对象   
  62.         doc =new  Document(root);  
  63.         XMLOutputter out = new  XMLOutputter();  
  64.         Format format = Format.getPrettyFormat();  
  65.         //设置输出格式   
  66.         format.setIndent(" " );  
  67.           
  68.         format.setEncoding("gbk" );  
  69.           
  70.         out.setFormat(format);  
  71.           
  72.         try  {  
  73.             FileWriter fwt = new  FileWriter(fileName);  
  74.             out.output(doc, fwt);  
  75.             fwt.flush();  
  76.             fwt.close();  
  77.         } catch  (IOException e) {  
  78.             // TODO Auto-generated catch block   
  79.             e.printStackTrace();  
  80.         }         
  81.     }  
  82.       
  83.     public   static   void  main(String args[]){  
  84.           
  85.         String[] ajaxs={"JAVASCRIPT" , "HTML" , "CSS" , "DOM" , "XMLHTTPREQUEST" };  
  86.           
  87.           XmlCreateUtil cu = new  XmlCreateUtil();  
  88.           cu.createRootElement(ajaxs);  
  89.           cu.outputXml("I:\\xml\\ajaxs.xml" );  
  90.           
  91.     }     
  92. }  

[img]

[/img]
3.修改xml

Java代码   收藏代码
  1. package  com.qingbyqing.xmlParse;  
  2.   
  3. import  java.io.FileWriter;  
  4. import  java.io.IOException;  
  5.   
  6. import  org.jdom.Document;  
  7. import  org.jdom.Element;  
  8. import  org.jdom.JDOMException;  
  9. import  org.jdom.input.SAXBuilder;  
  10. import  org.jdom.output.Format;  
  11. import  org.jdom.output.XMLOutputter;  
  12.   
  13. /**  
  14.  * 对xml进行修改删除  
  15.  * @author qingbyqing  
  16.  * @date 2011-3-29  
  17.  */   
  18.   
  19. public   class  XmlMendUtil {  
  20.     private  Document doc= null ;  
  21.       
  22.     //根据需要修改的文件创建文档   
  23.     public   void  setRootNode(String fileName){  
  24.           
  25.         SAXBuilder builder = new  SAXBuilder();  
  26.         try  {  
  27.             doc=builder.build(fileName);  
  28.               
  29.         } catch  (JDOMException e) {  
  30.             e.printStackTrace();  
  31.         } catch  (IOException e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.           
  35.     }  
  36.     public   void  mendXml(){  
  37.           
  38.         if (doc!= null ){  
  39.             Element root = doc.getRootElement();  
  40.             root.removeContent(root.getChildren().size()-1 ); //删除最后一个元素   
  41.               
  42.             //删除第一个元素下的id属性   
  43.             root.getChild("ajax" ).setAttribute( "id""3" );  
  44.             root.getChild("ajax" ).removeContent();  
  45.             //修改第二个元素的内容为:DHTML   
  46.             root.getChild("ajax" ).addContent( "DTML" );                 
  47.         }  
  48.           
  49.         return ;   
  50.     }  
  51.     public   void  outputXML(String fileName){  
  52.           
  53.            XMLOutputter out=new  XMLOutputter();  
  54.            Format format = Format.getPrettyFormat();  
  55.            format.setEncoding("UTF-8" );  
  56.            format.setIndent(" " );  
  57.              
  58.            out.setFormat(format);  
  59.              
  60.            try  {  
  61.             FileWriter fwt = new  FileWriter(fileName);  
  62.             out.output(doc, fwt);  
  63.             fwt.flush();  
  64.             fwt.close();  
  65.         } catch  (IOException e) {  
  66.             // TODO Auto-generated catch block   
  67.             e.printStackTrace();  
  68.         }  
  69.           
  70.     }  
  71.       
  72.     /**  
  73.      * @param args  
  74.      */   
  75.     public   static   void  main(String[] args) {  
  76.           
  77.         XmlMendUtil mend=new  XmlMendUtil();  
  78.         mend.setRootNode("I:\\xml\\ajaxs.xml" );  
  79.           
  80.         mend.mendXml();  
  81.         mend.outputXML("I:\\xml\\mended.xml" );  
  82.     }  
  83. }  



[img]

[/img]

生成如下文件

[/img]
将jdom-jar导入到项目中去:
[img]

[/img]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值