zoukankan      html  css  js  c++  java
  • dom4j的基本操作

    /**   
        
        *   建立一个XML文档,文档名由输入属性决定   
        
        *   @param   filename   需建立的文件名   
        
        *   @return   返回操作结果,   0表失败,   1表成功   
        
        */   
      import   java.io.File;   
      import   java.io.FileWriter;   
      import   org.dom4j.io.XMLWriter;   
      import   org.dom4j.*;   
      public   class   CreateDoc{   
        
      public   int   createXMLFile(String   filename){   
        
            /**   返回操作结果,   0表失败,   1表成功   */   
        
            int   returnValue   =   0;   
        
            /**   建立document对象   */   
        
          Document   document   =DocumentHelper.createDocument();   
        
            /**   建立XML文档的根books   */   
        
            Element   booksElement   =   document.addElement("books");   
        
            /**   加入一行注释   */   
        
            booksElement.addComment("This   is   a   test   for   dom4j,   holen,   2004.9.11");   
        
            /**   加入第一个book节点   */   
        
            Element   bookElement   =   booksElement.addElement("book");   
        
            /**   加入show属性内容   */   
        
            bookElement.addAttribute("show","yes");   
        
            /**   加入title节点   */   
        
            Element   titleElement   =   bookElement.addElement("title");   
        
            /**   为title设置内容   */   
        
          titleElement.setText("Dom4j   Tutorials");   
        
              
        
            /**   类似的完成后两个book   */   
        
            bookElement   =   booksElement.addElement("book");   
        
            bookElement.addAttribute("show","yes");   
        
            titleElement   =   bookElement.addElement("title");   
        
            titleElement.setText("Lucene   Studing");   
        
            bookElement   =   booksElement.addElement("book");   
        
            bookElement.addAttribute("show","no");   
        
            titleElement   =   bookElement.addElement("title");   
        
            titleElement.setText("Lucene   in   Action");   
        
              
        
            /**   加入owner节点   */   
        
            Element   ownerElement   =   booksElement.addElement("owner");   
        
            ownerElement.setText("O'Reilly");   
        
              
        
            try{   
        
                    /**   将document中的内容写入文件中   */   
        
                  XMLWriter   writer   =   new   XMLWriter(new   FileWriter(new   File(filename)));   
        
                  writer.write(document);   
        
                  writer.close();   
        
                    /**   执行成功,需返回1   */   
        
                    returnValue   =   1;   
        
            }catch(Exception   ex){   
        
                    ex.printStackTrace();   
        
            }   
        
                            
        
            return   returnValue;   
        
      }   
      public   static   void   main(String[]args){   
      CreateDoc   cd=new   CreateDoc();   
      int   i=cd.createXMLFile("D:\mybook.xml");   
      if(i==1){   
      System.out.println("建立成功!");   
      }   
      else{   
      System.out.println("建立失败!");   
      }   
        
      }   
        }   
    
    
    
    
    ===================================================================
    
    
    dom4j写xml文件测试:
    
    package com.yanek.demo.xml.test;
    
    import java.io.File;
    import java.io.FileWriter;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.XMLWriter;
    
    public class DOM4j {
    
     public static void main(String[] args) {
      // dom4j解析xml测试
    
      // 1. dom4j写xml
    
      /*
       * <?xml version="1.0" encoding="UTF-8"?> <actions> <action path="/test"
       * class="com.mystruts.demo.LoginAction"> <forward name="success"
       * url="hello.jsp"/> <forward name="fail" url="fail.jsp"/> </action>
       * <action path="/user" class="com.mystruts.demo.UserAction"> <forward
       * name="success" url="list.jsp"/> <forward name="fail" url="fail.jsp"/>
       * </action> </actions>
       */
      Document document = DocumentHelper.createDocument();
      Element actionsElement = document.addElement("actions");
    
      Element actionElement1 = actionsElement.addElement("action");
      actionElement1.addAttribute("path", "/test");
      actionElement1.addAttribute("class", "com.mystruts.demo.LoginAction");
    
      Element forwardElement1 = actionElement1.addElement("forward");
      forwardElement1.addAttribute("name", "success");
      forwardElement1.addAttribute("url", "hello.jsp");
    
      Element forwardElement2 = actionElement1.addElement("forward");
      forwardElement2.addAttribute("name", "fail");
      forwardElement2.addAttribute("url", "fail.jsp");
    
      Element actionElement2 = actionsElement.addElement("action");
      actionElement2.addAttribute("path", "/user");
      actionElement2.addAttribute("class", "com.mystruts.demo.UserAction");
    
      Element forwardElement21 = actionElement2.addElement("forward");
      forwardElement21.addAttribute("name", "success");
      forwardElement21.addAttribute("url", "list.jsp");
    
      Element forwardElement22 = actionElement2.addElement("forward");
      forwardElement22.addAttribute("name", "fail");
      forwardElement22.addAttribute("url", "fail.jsp");
    
      try {
       /** 将document中的内容写入文件中 */
       XMLWriter writer = new XMLWriter(new FileWriter(new File(
         "d:\mystruts.xml")));
       writer.write(document);
       writer.close();
       /** 执行成功,需返回1 */
    
      } catch (Exception ex) {
       ex.printStackTrace();
      }
    
      System.out.println(document.asXML());
    
     }
    
    }
    
    生成xml:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <actions><action path="/test" class="com.mystruts.demo.LoginAction"><forward name="success" url="hello.jsp"/><forward name="fail" url="fail.jsp"/></action><action path="/user" class="com.mystruts.demo.UserAction"><forward name="success" url="list.jsp"/><forward name="fail" url="fail.jsp"/></action></actions>
    
    
    
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/5iasp/archive/2009/06/12/4263354.aspx
    
    
    
    
    =======================================================================================
    
    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);
    } 
    }
    
     
    
    其次DOM4J的解释
    
    一.Document对象相关
    
    1.读取XML文件,获得document对象.
    
    
    SAXReader reader =   new SAXReader();
    Document   document  =  reader.read( new  File( " input.xml " ));
    
    2.解析XML形式的文本,得到document对象.
    
    
    String text  =   " <members></members> ";
    Document document  =  DocumentHelper.parseText(text);
    
    3.主动创建document对象.
    
    
    Document document  = DocumentHelper.createDocument();
    Element root  =  document.addElement( " members " ); //  创建根节点
    
    二.节点相关
    
    1.获取文档的根节点.
    
    
    Element rootElm  =  document.getRootElement();
    
    2.取得某节点的单个子节点.
    
    
    Element memberElm = root.element( " member " ); //  "member"是节点名
    
    3.取得节点的文字
    
    
    String text = memberElm.getText(); 
    也可以用:
    
    
    String text = root.elementText( " name " ); 
    这个是取得根节点下的name字节点的文字.
    
    4.取得某节点下名为"member"的所有字节点并进行遍历.
    
    
    List nodes  =  rootElm.elements( " member ");
    
     for  (Iterator it  =  nodes.iterator(); it.hasNext();)  {
    Element elm  = (Element) it.next();
    //  do something
    }
    
    5.对某节点下的所有子节点进行遍历.
    
    
    for (Iterator it = root.elementIterator();it.hasNext();) {
    Element element  =  (Element) it.next();
    //  do something 
    } 
    
    6.在某节点下添加子节点.
    
    
    Element ageElm = newMemberElm.addElement( " age " );
    
    7.设置节点文字.
    
    
    ageElm.setText( " 29 " );
    
    8.删除某节点.
    
    
    parentElm.remove(childElm); // childElm是待删除的节点,parentElm是其父节点
    
    9.添加一个CDATA节点.
    
    
    Element contentElm = infoElm.addElement( " content " );
    contentElm.addCDATA(diary.getContent());
    
                contentElm.getText(); // 特别说明:获取节点的CDATA值与获取节点的值是一个方法
    contentElm.clearContent(); //清除节点中的内容,CDATA亦可
    
     
    
    三.属性相关. 
    1.取得某节点下的某属性
    
    
    Element root = document.getRootElement();    
    Attribute attribute = root.attribute( " size " ); // 属性名name
    
    2.取得属性的文字
    
    
    String text = attribute.getText(); 
    也可以用:
    
    
    String text2 = root.element( " name " ).attributeValue( " firstname " ); 
    这个是取得根节点下name字节点的属性firstname的值.
    
    3.遍历某节点的所有属性
    
    
    Element root = document.getRootElement();    
    for (Iterator it = root.attributeIterator();it.hasNext();) {
    Attribute attribute  =  (Attribute) it.next();
    String text = attribute.getText();
    System.out.println(text);
    }
    
    4.设置某节点的属性和文字.
    
    
    newMemberElm.addAttribute( " name " , " sitinspring " );
    
    5.设置属性的文字
    
    
    Attribute attribute = root.attribute( " name " );
    attribute.setText( " sitinspring " );
    
    6.删除某属性
    
    
    Attribute attribute = root.attribute( " size " ); // 属性名name 
    root.remove(attribute);
    
    四.将文档写入XML文件.
    1.文档中全为英文,不设置编码,直接写入的形式.
    
    
    XMLWriter writer = new XMLWriter( new FileWriter( " output.xml " ));
    


  • 相关阅读:
    今天过节提前下班
    作控件也挺郁闷啊!
    使用Windows XP的主题
    这几天关心加密的人很多
    多普达515,好爽啊!
    515看电影
    我要定计划
    龙芯II发布了,好事儿!
    转:关于星际与XP的结对编程
    昨天参加了一个微软的会
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3178082.html
Copyright © 2011-2022 走看看