`
gonglianying
  • 浏览: 198016 次
  • 性别: Icon_minigender_2
  • 来自: xxx
文章分类
社区版块
存档分类
最新评论

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;

    }

}
分享到:
评论

相关推荐

    dom4j 解析(读取) xml 节点数据

    接下来,我们将创建一个`SAXReader`实例,它是DOM4J中的解析器,用于读取XML文件: ```java SAXReader reader = new SAXReader(); ``` 然后,使用`reader`读取XML文件并获取`Document`对象,`Document`代表整个XML...

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其插入到现有结构中。首先,你需要通过`DocumentFactory`创建一个`Element`,然后使用`Element`的`addContent()`方法或`insertContent()`方法将...

    dom4j解析节点名称和值

    dom4j解析节点名称和值,放入一个string类型的xml字符串输出标签对应的名称以及值的map

    删除DOM节点 删除DOM节点

    删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点...

    dom4j常用方法

    dom4j常用方法 i.SAXReader sr = new SAXReader(); 生成解析器对象 ii.解析器对象.read(file对象); 解析文件生成Document对象 iii.文档对象.getRootElement() 获取跟元素节点 iv.元素节点.elements() 获取到指定...

    超全面javaweb教程第6天- 12 使用dom4j实现删除节点的操作

    超全面javaweb教程第6天-_12_使用dom4j实现删除节点的操作

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    超全面javaweb教程第6天- 08 使用dom4j实现在末尾添加节点的操作

    超全面javaweb教程第6天-_08_使用dom4j实现在末尾添加节点的操作

    dom4j

    通过DOM4J可以轻松地实现节点的添加、修改和删除。以下是修改XML文件的关键代码: ```java // 使用SAXReader读取XML文件 SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File...

    dom4j-2.0.3.zip

    DOM4J中的Attribute类提供了创建、修改和删除属性的方法。 3. **Document**: Document类表示整个XML文档,是整个XML结构的根节点。它包含了XML文档的声明、元素、注释等所有信息。 4. **XPath**: DOM4J支持XPath...

    DOM4J 解析XML 添加 删除 修改

    在DOM4J中,可以使用`Element`类来创建新的元素,并通过`addElement()`方法将其添加到已有元素的子节点中。例如,如果有一个`root`元素,我们可以通过`root.addElement("newElement")`来添加一个新的子元素`new...

    DOM4J帮助文档及使用教程

    3. **基本概念**:介绍DOM4J中的核心类,如`Document`(文档对象)、`Element`(元素)、`Attribute`(属性)、`Text`(文本节点)等,以及它们之间的关系。 4. **解析XML**:讲解如何使用DOM4J解析XML文件,包括...

    dom4j-2.1.3.zip

    DOM4J是Java社区中一个强大且流行的XML处理库,它提供了丰富的API,使得XML的读取、解析、创建和修改变得简单易行。这个名为"dom4j-2.1.3.zip"的压缩包文件,正是DOM4J库的版本2.1.3,包含了该库的完整源码和必要的...

    使用Maven管理项目,实现DOM4j操作XML文件

    1. **引入DOM4j依赖**:在`pom.xml`文件中,添加DOM4j的依赖项,这样Maven会在构建时自动下载并管理这个库。 ```xml &lt;groupId&gt;org.dom4j &lt;artifactId&gt;dom4j &lt;version&gt;2.1.3 ``` 2. **创建XML文件**:使用...

    DOM4J 的使用

    * NodeFilter:定义了在 dom4j 节点中产生的一个滤镜或谓词的行为。 * ProcessingInstruction:定义 XML 处理指令。 * Text:定义 XML 文本节点。 * Visitor:用于实现 Visitor 模式。 * XPath:在分析一个字符串后...

    超全面javaweb教程第6天- 09 使用dom4j实现在在特定位置添加节点的操作

    超全面javaweb教程第6天-_09_使用dom4j实现在在特定位置添加节点的操作

    dom4j-1.6.jar.zip

    - **查询XML**:DOM4J支持XPath查询语言,可以方便地查找XML文档中的特定节点。 - **修改XML**:对找到的节点进行添加、删除、替换等操作,实现XML文档的动态修改。 - **事件驱动处理**:DOM4J支持SAX事件驱动的...

    dom4j-java-API

    - **Document**: 在DOM4J中,Document代表整个XML文档,它是XML结构的根节点。 - **Element**: Element是XML文档中的一个节点,代表XML的元素,如`&lt;tag&gt;`。 - **Attribute**: Attribute表示元素上的属性,如`...

Global site tag (gtag.js) - Google Analytics