zoukankan      html  css  js  c++  java
  • 使用Dom4j修改XML文件

    代码如下:

    需要使用的jar包除了dom4j的jar包之外,还需要jar包:jaxen-1.1-beta-6.jar

     1 package xml;
     2 
     3 import org.dom4j.Document;
     4 import org.dom4j.Element;
     5 import org.dom4j.Attribute;
     6 import java.util.List;
     7 import java.util.Iterator;
     8 import org.dom4j.io.XMLWriter;
     9 import java.io.*;
    10 import org.dom4j.DocumentException;
    11 import org.dom4j.io.SAXReader;
    12 
    13 public class Dom4jModifyXml {
    14     public void modifyDocument(File inputXml) {
    15         try {
    16             //使用 SAXReader 解析 XML 文档
    17             SAXReader saxReader = new SAXReader();
    18             Document document = saxReader.read(inputXml);
    19             
    20             //使用 XPath 表达式从 article 元素中获得 level 节点列表。
    21             //如果 level 属性值是Intermediate则改为Introductory。
    22             //定位节点需要使用jar包:jaxen-1.1-beta-6.jar
    23             List list = document.selectNodes("//article/@level");  
    24             Iterator iter = list.iterator();
    25             while (iter.hasNext()) {
    26                 Attribute attribute = (Attribute) iter.next();
    27                 if (attribute.getValue().equals("Intermediate"))
    28                     attribute.setValue("Introductory");
    29             }
    30 
    31             //修改日期
    32             list = document.selectNodes("//article/@date");
    33             iter = list.iterator();
    34             while (iter.hasNext()) {
    35                 Attribute attribute = (Attribute) iter.next();
    36                 if (attribute.getValue().equals("December-2001"))
    37                     attribute.setValue("October-2002");
    38             }
    39             
    40             //获取 article 元素列表,从 article 元素中的 title 元素得到一个迭代器,并修改 title 元素的文本。
    41             list = document.selectNodes("//article");
    42             iter = list.iterator();
    43             while (iter.hasNext()) {
    44                 Element element = (Element) iter.next();
    45                 Iterator iterator = element.elementIterator("title");
    46                 while (iterator.hasNext()) {
    47                     Element titleElement = (Element) iterator.next();
    48                     if (titleElement.getText().equals("Java configuration with XML Schema"))
    49                         titleElement.setText("Create flexible and extensible XML schema");
    50                 }
    51             }
    52             
    53             //修改作者的姓
    54             list = document.selectNodes("//article/author");
    55             iter = list.iterator();
    56             while (iter.hasNext()) {
    57                 Element element = (Element) iter.next();
    58                 Iterator iterator = element.elementIterator("firstname");
    59                 while (iterator.hasNext()) {
    60                     Element firstNameElement = (Element) iterator.next();
    61                     if (firstNameElement.getText().equals("Marcello"))
    62                         firstNameElement.setText("Ayesha");
    63                 }
    64             }
    65             
    66             //修改作者的名字
    67             list = document.selectNodes("//article/author");
    68             iter = list.iterator();
    69             while (iter.hasNext()) {
    70                 Element element = (Element) iter.next();
    71                 Iterator iterator = element.elementIterator("lastname");
    72                 while (iterator.hasNext()) {
    73                     Element lastNameElement = (Element) iterator.next();
    74                     if (lastNameElement.getText().equals("Vitaletti"))
    75                         lastNameElement.setText("Malik");
    76                 }
    77             }
    78             
    79             //将修改后的文档流写入新的xml文件中
    80             XMLWriter output = new XMLWriter(new FileWriter(new File("E:/xml/catalog-modify.xml")));
    81             output.write(document);
    82             output.close();
    83         }
    84 
    85         catch (DocumentException e) {
    86             System.out.println(e.getMessage());
    87         } catch (IOException e) {
    88             System.out.println(e.getMessage());
    89         }
    90     }
    91 
    92     public static void main(String[] argv) {
    93         Dom4jModifyXml dom4jModifyXml = new Dom4jModifyXml();
    94         dom4jModifyXml.modifyDocument(new File("E:/xml/catalog.xml"));
    95     }
    96 }

    原来的catalog.xml文件:

     1 <?xml version="1.0" encoding="UTF-8"?> 
     2 <catalog> 
     3 <!--An XML Catalog--> 
     4 <?target instruction?>
     5 <journal title="XML Zone" publisher="IBM developerWorks"> 
     6   <article level="Intermediate" date="December-2001">
     7     <title>Java configuration with XML Schema</title> 
     8     <author> 
     9       <firstname>Marcello</firstname> 
    10       <lastname>Vitaletti</lastname> 
    11     </author>
    12   </article>
    13  </journal> 
    14 </catalog>

    修改后的catalog-modify.xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <catalog> 
     3 <!--An XML Catalog--> 
     4 <?target instruction?>
     5 <journal title="XML Zone" publisher="IBM developerWorks"> 
     6   <article level="Introductory" date="October-2002">
     7     <title>Create flexible and extensible XML schema</title> 
     8     <author> 
     9       <firstname>Ayesha</firstname> 
    10       <lastname>Malik</lastname> 
    11     </author>
    12   </article>
    13  </journal> 
    14 </catalog>
  • 相关阅读:
    __file__ 作用以及模块导入方法
    random 模块
    time 模块
    module模块和包
    装饰器
    python闭包
    filter map reduce函数的使用
    python文件处理
    python内置函数使用
    函数
  • 原文地址:https://www.cnblogs.com/luomsg/p/4043627.html
Copyright © 2011-2022 走看看