dom4j中添加节点,修改节点,删除节点


public class Dom4jDemo {

    public Dom4jDemo() {

    }

    /**

     * 建立一个XML文档,文档名由输入参数决定

     * @param filename 需建立的文件名

     * @return 返回操作结果, 0表失败, 1表成功

     */

    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中的内容写入文件中 */
OutputFormat   format   =   OutputFormat.createPrettyPrint();
            format.setEncoding( "UTF-8");

           XMLWriter writer = new XMLWriter(new FileOutputStream(new File(filename)),format);

           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 static int ModiXMLFile(String filename,String newfilename,ItemVo itemvo){

        int returnValue = 0;

        try{

            SAXReader saxReader = new SAXReader();   

            Document document = saxReader.read(new File(filename));

            /** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */

            List  list = document.selectNodes("/bcaster/item/@id");
            Iterator iter = list.iterator();
            int length=0;
            while(iter.hasNext()){
                Attribute attribute = (Attribute)iter.next();
                if(attribute.getValue().equals(itemvo.getId()))
                {
                length=attribute.getParent().attributes().size();
                if(length>2){
       attribute.getParent().attribute(0).setValue(itemvo.getItem_url());
       attribute.getParent().attribute(1).setValue(itemvo.getLink());
       attribute.getParent().attribute(2).setValue(itemvo.getId());
                }else
                {
                      document.getRootElement().remove(attribute.getParent());
                      Element emp1Element = DocumentHelper.createElement("item");
                      emp1Element.addAttribute("item_url", itemvo.getItem_url());
                      emp1Element.addAttribute("link", itemvo.getLink());
                      emp1Element.addAttribute("id", itemvo.getId());
                      emp1Element.addAttribute("titleName", itemvo.getTitleName());
                      document.getRootElement().add(emp1Element);
                }
                }  

            }    

            try{

                /** 将document中的内容写入文件中 */
    OutputFormat   format   =   OutputFormat.createPrettyPrint();
                format.setEncoding( "UTF-8");

                XMLWriter writer = new XMLWriter(new FileOutputStream(new File(newfilename)),format);

                writer.write(document);

                writer.close();

                /** 执行成功,需返回1 */
    Dom4jDemo.formatXMLFile(newfilename);

                returnValue = 1;

            }catch(Exception ex){

                ex.printStackTrace();

            }

           

         }catch(Exception ex){

            ex.printStackTrace();

        }

         return returnValue;

     }
   
   
    /******
     * 更新xml文件中的属性
     * @param filename
     * @param newfilename
     * @param itemvo
     * @return
     * xml文件 ,节点位置 使用xPath比如://book[@type='society'],节点名称, 节点新值
     * @return 返回操作结果, 0表失败, 1表成功
     */
    public static int updateXMLFileAttribute(String filePathAndName,String newfilePathAndName,String noteXPath,String[] attributeName,String[] attributeValue)
    {
       try {
   SAXReader saxReader = new SAXReader();
   Document document = saxReader.read(new File(filePathAndName));
  
   //获取节点位置
   Element noteElement=(Element)document.selectSingleNode(noteXPath);
  
   if(attributeName!=null  && attributeValue!=null && attributeName.length == attributeValue.length)
   {
    for(int j=0;j<attributeName.length;j++)
    {
       Attribute attribute = noteElement.attribute(attributeName[j]);
   //System.out.print("属性名:"+attribute.getName()+"  属性值:"+attribute.getValue());
   //移除属性
   if(attribute!=null)
   {
   noteElement.remove(attribute);
   noteElement.addAttribute(attributeName[j], attributeValue[j]);
   }
    }
  
   }
  
   /** 将document中的内容写入文件中 */
OutputFormat   format   =   OutputFormat.createPrettyPrint();
            format.setEncoding( "UTF-8");

               XMLWriter writer = new XMLWriter(new FileOutputStream(new File(newfilePathAndName)),format);

               writer.write(document);

               writer.close();

               /** 执行成功,需返回1 */
     Dom4jDemo.formatXMLFile(newfilePathAndName);
    
     return 1;

  
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return 0;
    }
   
   
   
   
    public static int deleteXMLFile(String filename,String newfilename,ItemVo itemvo){
   
    int returnValue = 0;
   
    try{
   
    SAXReader saxReader = new SAXReader();   
   
    Document document = saxReader.read(new File(filename));
   
    /** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */
   
    List  list = document.selectNodes("/bcaster/item/@id");
    Iterator iter = list.iterator();
    while(iter.hasNext()){
    Attribute attribute = (Attribute)iter.next();
    if(attribute.getValue().equals(itemvo.getId())){
    document.getRootElement().remove(attribute.getParent());
    }  
   
    }    
    try{
   
    /** 将document中的内容写入文件中 */
    OutputFormat   format   =   OutputFormat.createPrettyPrint();
                format.setEncoding( "UTF-8");
    XMLWriter writer = new XMLWriter(new FileOutputStream(new File(newfilename)),format);
    writer.write(document);
   
    writer.close();
   
    /** 执行成功,需返回1 */
    Dom4jDemo.formatXMLFile(filename);
   
    returnValue = 1;
   
    }catch(Exception ex){
   
    ex.printStackTrace();
   
    }
   
   
   
    }catch(Exception ex){
   
    ex.printStackTrace();
   
    }
   
    return returnValue;
   
    }
    public static int addXMLFile(String filename,String newfilename,ItemVo itemvo){
   
    int returnValue = 0;
   
    try{
   
    SAXReader saxReader = new SAXReader();   
   
    Document document = saxReader.read(new File(filename));
       
    // 添加员工节点 "employee"
    Element emp1Element = DocumentHelper.createElement("item");
    emp1Element.addAttribute("item_url", itemvo.getItem_url());
    emp1Element.addAttribute("link", itemvo.getLink());
    emp1Element.addAttribute("id", itemvo.getId());
    emp1Element.addAttribute("titleName", itemvo.getTitleName());
    document.getRootElement().add(emp1Element);
   
    try{
   
    /** 将document中的内容写入文件中 */
    OutputFormat   format   =   OutputFormat.createPrettyPrint();
                format.setEncoding( "UTF-8");
    XMLWriter writer = new XMLWriter( new FileOutputStream(new File(newfilename)),format);
   
    writer.write(document);
   
    writer.close();
   
    /** 执行成功,需返回1 */
    Dom4jDemo.formatXMLFile(filename);
   
    returnValue = 1;
   
    }catch(Exception ex){
   
    ex.printStackTrace();
   
    }
   
   
   
    }catch(Exception ex){
   
    ex.printStackTrace();
   
    }
   
    return returnValue;
   
    }
    public static List loadItemList(String filename){
   
    List list=new ArrayList();
   
    try{
   
    SAXReader saxReader = new SAXReader();   
   
    Document document = saxReader.read(new File(filename));
   
    List xmllist= document.selectNodes("/bcaster/item");
         for (int i = 0, n = xmllist.size(); i < n; i++)

         {
        ItemVo itemvo=new ItemVo();

             DefaultElement itemElement = (DefaultElement) xmllist.get(i);
             String item_url = itemElement.attributeValue("item_url");
             String link = itemElement.attributeValue("link");
             String id = itemElement.attributeValue("id");
             String titleName = itemElement.attributeValue("titleName");
            
             itemvo.setId(id);
             itemvo.setItem_url(item_url);
             itemvo.setLink(link);
             itemvo.setTitleName(titleName);
             list.add(itemvo);

//             System.out.println(item_url + "===========" + link);

         }

   
    }catch(Exception ex){
   
    ex.printStackTrace();
   
    }
   
    return list;
   
    }

   

    /**

     * 格式化XML文档,并解决中文问题

     * @param filename

     * @return

     */

    public static int formatXMLFile(String filename){

       int returnValue = 0;

       try{

           SAXReader saxReader = new SAXReader();   

           Document document = saxReader.read(new File(filename));

           XMLWriter output = null;

           /** 格式化输出,类型IE浏览一样 */

           OutputFormat format = OutputFormat.createPrettyPrint();

           /** 指定XML字符集编码 */

           format.setEncoding("UTF-8");

           output = new XMLWriter(new FileOutputStream(new File(filename)),format);

           output.write(document);

           output.close();       

           /** 执行成功,需返回1 */

           returnValue = 1;      

        }catch(Exception ex){

           ex.printStackTrace();

       }

        return returnValue;

    }

}

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