zoukankan      html  css  js  c++  java
  • 转载 Dom4j生成xml

    首先我们给出一段示例程序:

     import  java.io.File;
     
    import  java.io.FileWriter;
     
    import  java.util.Iterator;
     
     
    import  org.dom4j.Document;
     
    import  org.dom4j.DocumentHelper;
     
    import  org.dom4j.Element;
     
    import  org.dom4j.io.OutputFormat;
     
    import  org.dom4j.io.SAXReader;
     
    import  org.dom4j.io.XMLWriter;
     
     
    public   class  DOM4JTest  {
     
         
     /**   */ 
         
     /**   */ 
         
     /**   */ 
         
     /** 
          * DOM4J读写XML示例
          * 
          * 
     @param  args
          * 
     @throws  Exception
          
     */ 

         
     public   static   void  main(String[] args)  {
             
     try   {
                 XMLWriter writer 
     =   null ; //  声明写XML的对象 
     
                SAXReader reader  =   new  SAXReader();
     
                 OutputFormat format 
     =  OutputFormat.createPrettyPrint();
                 format.setEncoding(
     " GBK " ); //  设置XML文件的编码格式 
     

                 String filePath 
     =   " d://student.xml " ;
                 File file 
     =   new  File(filePath);
                 
     if  (file.exists())  {
                     Document document 
     =  reader.read(file); //  读取XML文件 
     
                    Element root  =  document.getRootElement(); //  得到根节点 
     
                     boolean  bl  =   false ;
                     
     for  (Iterator i  =  root.elementIterator( " 学 生 " ); i.hasNext();)  {
                         Element student 
     =  (Element) i.next();
                         
     if  (student.attributeValue( " sid " ).equals( " 001 " ))  {
                             
     //  修改学生sid=001的学生信 息 
     
                            student.selectSingleNode( " 姓 名 " ).setText( " 王五 " );
                             student.selectSingleNode(
     " 年 龄 " ).setText( " 25 " );
     
                             writer 
     =   new  XMLWriter( new  FileWriter(filePath), format);
                             writer.write(document);
                             writer.close();
                             bl 
     =   true ;
                             
     break ;
                         }
     

                     }
     

                     
     if  (bl)  {
                         
     //  添加一个学生信息 
     
                        Element student  =  root.addElement( " 学 生 " );
                         student.addAttribute(
     " sid "  " 100 " );
                         Element sid 
     =  student.addElement( " 编 号 " );
                         sid.setText(
     " 100 " );
                         Element name 
     =  student.addElement( " 姓 名 " );
                         name.setText(
     " 嘎嘎 " );
                         Element sex 
     =  student.addElement( " 性 别 " );
                         sex.setText(
     "  " );
                         Element age 
     =  student.addElement( " 年 龄 " );
                         age.setText(
     " 21 " );
     
                         writer 
     =   new  XMLWriter( new  FileWriter(filePath), format);
                         writer.write(document);
                         writer.close();
                     }
     

                 }
     
      else   {
                     
     //  新建student.xml文件并新增内容 
     
                    Document _document  =  DocumentHelper.createDocument();
                     Element _root 
     =  _document.addElement( " 学 生信息 " );
                     Element _student 
     =  _root.addElement( " 学 生 " );
                     _student.addAttribute(
     " sid "  " 001 " );
                     Element _id 
     =  _student.addElement( " 编 号 " );
                     _id.setText(
     " 001 " );
                     Element _name 
     =  _student.addElement( " 姓 名 " );
                     _name.setText(
     " 灰机 " );
                     Element _age 
     =  _student.addElement( " 年 龄 " );
                     _age.setText(
     " 18 " );
     
                     writer 
     =   new  XMLWriter( new  FileWriter(file), format);
                     writer.write(_document);
                     writer.close();
                 }
     

                 System.out.println(
     " 操作结束!  " );
             }
     
      catch  (Exception e)  {
                 e.printStackTrace();
             }
     

     
         }
     

     }


    执行结果应该是这样:

     

    循环解析节点:

     private   void  getAllNodes(String xml)  {
             
     try   {
                 Document authtmp 
     =  DocumentHelper.parseText(xml);
                 List
     < Element >  list  =  authtmp.selectNodes( " //sms/node " );
                 
     for  ( int  j  =   0 ; j  <  list.size(); j ++  {
                     Element node 
     =  (Element) list.get(j);
                     nodeByNodes(node);
                 }
     

             }
     
      catch  (Exception e)  {
                 e.printStackTrace();
             }
     

         }
     

     
         
     private   void  nodeByNodes(Element node)  {
             
     if  (node.element( " node "  !=   null  {
                 String id 
     =  node.attributeValue( " id " );
                 String name 
     =  node.attributeValue( " name " );
                 System.out.print(id 
     +   " ------- " );
                 System.out.println(name);
                 
     for  (Iterator i  =  node.elementIterator( " node " ); i.hasNext();)  {
                     Element newNode 
     =  (Element) i.next();
                     nodeByNodes(newNode);
                 }
     

             }
     
      else   {
                 String id 
     =  node.attributeValue( " id " );
                 String name 
     =  node.attributeValue( " name " );
                 System.out.print(id 
     +   " ------- " );
                 System.out.println(name);
             }
     

         }
  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/xiao0/p/2170198.html
Copyright © 2011-2022 走看看