使用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>
时间: 2024-10-18 07:35:01

使用Dom4j修改XML文件的相关文章

Java xml 操作(Dom4J修改xml &#160;&#160;+ xPath技术 &#160;+ SAX解析 + XML约束)

1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大小写.有且仅有一个根标签. 属性: 可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单 双混用. 文档声明: <?xml version="1.0" encoding="utf-8"?> encoding="utf-8&q

myeclipse修改xml文件字体大小

myeclipse中怎么修改xml文件的字体大小呢?网上搜了很多,得到的答案基本都是: window--preferences--General--appearance--colors   and   fonts--basic--text font 其实这项只能修改java文件的字体大小,并不能修改xml文件的字体,如果要修改xml文件字体大小,点击 修改这项!

使用DOM4J解析XMl文件与读取XML文件

XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <bookstore> 3 <book id="1"> 4 <name>冰与火之歌</name> 5 <author>乔治马丁</author> 6 <year>2014</year> 7 <price>89</price&g

Android修改XML文件

最近在项目中需要使用XML记录数据,网上这方面的文章较少,记录一下 使用DOM方式 [java] view plaincopy /** * 追加内容到XML文档 * @param instructions * @throws ParserConfigurationException * @throws SAXException * @throws IOException * @throws TransformerException */ public void append2XML(String

【DRP】采用dom4j完成XML文件导入数据库

xml文件在现在的web开发中扮演着重要的角色,从数据库连接配置到其他各种参数的设置,xml文件在反射技术的应用中举足轻重,也正因为xml文件中保存着如此重要的参数,所以对xml文件的读写操作就显得更加重要.下面我们重点讲解一下dom4j完成XML文件导入数据库. 0.带读取的xml文件如下: 1.利用PL/SQL导入SQL脚本,建立Oracle数据库表(表T_XML)结构,用于接收xml导入的数据 2.按照下图,建立目录并导入相应文件 通过引入的相关jar包,实现dom4j技术解析xml文件(

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

用DOM4J解析XML文件案例

用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图: 1.xml文件 <?xml version="1.0" encoding="UTF-8"?> <class> <student> <name>张三</name> <sid>111111</sid> </student> <stude

Dom4j读取xml文件——JAVA

前几天,用Dom4j写了三个版本的读取XML文件,现在分享下. 第一版本: XML: <?xml version="1.0" encoding="UTF-8"?> <do-config> <do path="User/adduser" type="UserPackage.UserServlet"> <forward name="Success">AddSucc

DOS 批处理 修改xml文件

之前对批处理和dos只停留在cd ping ipconfig水平,我以为改个文件应该很简单吧,把文件读出来做个替换再写回去不就欧了,百度个例子改改,那还不是分分钟的事,哪知道事实比想的要复杂的多. 我要修改的是这样一个文件内容: .... mylove=“******” .... mylove=“******”单独占一行,我只需修改*号部分. 首先我想用set命令把一个文件内容赋值给一个变量,各种尝试最后放弃了,本来以为set命令的a开关可以实现,哪知道这货只支持运算符,强烈建议a开关支持表达式