转载 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);
         }
 

     }

转载于:https://www.cnblogs.com/xiao0/archive/2011/09/07/2170198.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值