首页 > 代码库 > 使用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文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。