首页 > 代码库 > 使用Dom4j修改XML文件

使用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.jar23             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>

使用Dom4j修改XML文件