Dom4j例子,非原创,出处不详

  import   java.io.File;   
  import   java.io.*;   
  import   java.util.*;   
  import   java.util.List;   
    
  import   org.dom4j.Attribute;   
    
  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;   
  import   org.dom4j.DocumentException;   
    
  /**   
    *   @author   Holen   Chen   
    
    */   
    
  public   class   Work   {   
    
      public   Work()   {   
    
      }   
    
      /**   
        *   建立一个XML文档,文档名由输入参数决定   
    
        *   @param   filename   需建立的文件名   
    
        *   @return   返回操作结果,   0表失败,   1表成功   
    
        */   
    
      public   int   createXMLFile(String   filename)   {   
    
          /**   返回操作结果,   0表失败,   1表成功   */   
    
          int   returnValue   =   0;   
    
          /**   建立document对象   */   
    
          Document   document   =   DocumentHelper.createDocument();   
    
          /**   建立XML文档的根dates   */   
    
          Element   booksElement   =   document.addElement("dates");   
    
          /**   加入一行注释   */   
    
          booksElement.addComment("This   is   a   test   workDate,   2004.11.18");   
    
          /**   加入第一个workday节点   */   
    
          Element   bookElement   =   booksElement.addElement("workday");   
    
          /**   加入day节点   */   
    
          Element   titleElement   =   bookElement.addElement("day");   
    
          /**   设置属性   */   
          titleElement.addAttribute("flag",   "yes");   
    
          /**   为title设置内容   */   
    
          titleElement.setText("2004-11-16");   
    
          /**   类似的完成后两个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;   
    
      }   
    
      /**   
        *   修改XML文件中内容,并另存为一个新文件   
    
        *   重点掌握dom4j中如何添加节点,修改节点,删除节点   
    
        *   @param   filename   修改对象文件   
    
        *   @param   newfilename   修改后另存为该文件   
    
        *   @return   返回操作结果,   0表失败,   1表成功   
    
        */   
    
      public   int   ModiXMLFile(String   filename,   String   newfilename)   {   
    
          int   returnValue   =   0;   
    
          try   {   
    
              SAXReader   saxReader   =   new   SAXReader();   
    
              Document   document   =   saxReader.read(new   FileReader(new   File(filename)));   
    
              /**   修改内容之一:   如果book节点中show参数的内容为yes,则修改成no   */   
    
              /**   先用xpath查找对象   */   
    
              List   list   =   document.selectNodes("/dates/workday/day/@flag");   
    
              Iterator   iter   =   list.iterator();   
    
              while   (iter.hasNext())   {   
    
                  Attribute   attribute   =   (Attribute)   iter.next();   
    
                  if   (attribute.getValue().equals("yes"))   {   
    
                      attribute.setValue("no");   
    
                  }   
    
              }   
    
              /**   
                *   修改内容之二:   
    
                *   并在workday节点中加入day节点,day节点的内容为2004-11-17,还为day节点添加一个参数flag   
    
                */   
    
              list   =   document.selectNodes("/dates/workday");   
    
              iter   =   list.iterator();   
    
              if   (iter.hasNext())   {   
    
                  Element   workdayElement   =   (Element)   iter.next();   
    
                  //ownerElement.setText("Tshinghua");   
    
                  Element   dayElement   =   workdayElement.addElement("day");   
    
                  dayElement.setText("2004-11-17");   
    
                  dayElement.addAttribute("flag",   "false");   
    
              }   
    
              /**   修改内容之三:   若day内容为2004-11-16,则将属性falg设为false   */   
    
              list   =   document.selectNodes("/dates/workday");   
    
              iter   =   list.iterator();   
    
              while   (iter.hasNext())   {   
    
                  Element   workdayElement   =   (Element)   iter.next();   
    
                  Iterator   iterator   =   workdayElement.elementIterator("day");   
    
                  while   (iterator.hasNext())   {   
    
                      Element   dayElement   =   (Element)   iterator.next();   
    
                      if   (dayElement.getText().equals("2004-11-16"))   {   
                          List   list1   =   dayElement.attributes();   
                          Iterator   iter1   =   list1.iterator();   
                          while   (iter1.hasNext())   {   
                              Attribute   attribute   =   (Attribute)   iter1.next();   
                              attribute.setValue("kkkkkkkkkkk");   
                          }   
                      }   
                  }   
    
              }   
    
              try   {   
    
                  /**   将document中的内容写入文件中   */   
    
                  XMLWriter   writer   =   new   XMLWriter(new   FileWriter(new   File(newfilename)));   
    
                  writer.write(document);   
    
                  writer.close();   
    
                  /**   执行成功,需返回1   */   
    
                  returnValue   =   1;   
    
              }   
              catch   (Exception   ex)   {   
    
                  ex.printStackTrace();   
    
              }   
    
          }   
          catch   (Exception   ex)   {   
    
              ex.printStackTrace();   
    
          }   
    
          return   returnValue;   
    
      }   
    
      /**   
        *   格式化XML文档,并解决中文问题   
    
        *   @param   filename   
    
        *   @return   
    
        */   
    
      public   int   formatXMLFile(String   filename)   {   
    
          int   returnValue   =   0;   
    
          try   {   
    
              SAXReader   saxReader   =   new   SAXReader();   
    
              Document   document   =   saxReader.read(new   FileReader(new   File(filename)));   
    
              XMLWriter   output   =   null;   
    
              /**   格式化输出,类型IE浏览一样   */   
    
              OutputFormat   format   =   OutputFormat.createPrettyPrint();   
    
              /**   指定XML字符集编码   */   
    
              format.setEncoding("GBK");   
    
              output   =   new   XMLWriter(new   FileWriter(new   File(filename)),   format);   
    
              output.write(document);   
    
              output.close();   
    
              /**   执行成功,需返回1   */   
    
              returnValue   =   1;   
    
          }   
          catch   (Exception   ex)   {   
    
              ex.printStackTrace();   
    
          }   
    
          return   returnValue;   
    
      }   
      /**   
        *   create   one   XML   of   file   
        *   @param   holiday   String[]   
        *   @param   workday   String[]   
        *   @param   filename   String         filename   OF   XML   
        */   
      public   void   createXML(String[]   holiday,String[]   workday,   String   filename)   {   
          Document   document   =   DocumentHelper.createDocument();   
          Element   booksElement   =   document.addElement("dates");   
          for   (int   i   =   0;   i   <   holiday.length;   i++)   {   
              Element   bookElement   =   booksElement.addElement("holiday");   
              bookElement.addAttribute("flag",   "yes");   
              bookElement.setText(holiday[i]);   
          }   
          for   (int   i   =   0;   i   <   workday.length;   i++)   {   
              Element   bookElement   =   booksElement.addElement("holiday");   
              bookElement.addAttribute("flag",   "no");   
              bookElement.setText(workday[i]);   
          }   
          try   {   
              XMLWriter   writer   =   new   XMLWriter(new   FileWriter(new   File(filename)));   
              writer.write(document);   
              writer.close();   
          }   
          catch   (Exception   ex)   {   
              ex.printStackTrace();   
          }   
      }   
      public   HashMap   getXMLElement(String   filename)   throws   FileNotFoundException,   
              DocumentException   {   
          HashMap   hs=new   HashMap();   
          SAXReader   saxReader   =   new   SAXReader();   
          Document   document   =   saxReader.read(new   FileReader(new   File(filename)));   
          Element   root=document.getRootElement();   
          List   list=root.elements("holiday");   
          if(list.isEmpty()){   
              return   null;   
          }else{   
              Iterator   it=list.iterator();   
              while(it.hasNext()){   
                  Element   holiday=(Element)it.next();   
                  hs.put(holiday.getTextTrim(),holiday.attribute("flag").getValue());   
              }   
              return   hs;   
          }   
      }   
  }   
  

你可能感兴趣的:(xml,IE,Lucene)