代码如下:
package
com.willpower.parsexml;
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
import
java.io.File;
import
java.io.FileWriter;
import
java.io.IOException;
import
java.util.Iterator;
import
java.util.List;
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
import
org.dom4j.Attribute;
import
org.dom4j.Document;
import
org.dom4j.DocumentException;
import
org.dom4j.DocumentHelper;
import
org.dom4j.Element;
import
org.dom4j.io.OutputFormat;
import
org.dom4j.io.SAXReader;
import
org.dom4j.io.XMLWriter;
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1fa987a29c6482f53d401256f96355eb.gif)
public
class
ParseXml
{
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
/** *//**
* 创建XML文件
* @author cnyqiao@hotmail.com
* @param fileName
* @date Jul 10, 2006 3:34:58 PM
* @return rtn true or false
*/
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
public boolean createXMLFile(String fileName)
{
boolean rtn = false;
// 使用DocumentHelper.createDocument方法建立一个文档实例
Document document = DocumentHelper.createDocument();
// 使用addElement方法方法创建根元素
Element catalogElement = document.addElement("catalog");
// 使用addComment方法方法向catalog元素添加注释
catalogElement.addComment("An XML cataog");
// 使用addProcessInstruction向catalog元素增加处理指令
catalogElement.addProcessingInstruction("target", "text");
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 使用addElement方法向catalog元素添加journal子元素
Element journalElement = catalogElement.addElement("journal");
// 使用addAttribute方法向journal元素添加title和publisher属性
journalElement.addAttribute("title", "XML Zone");
journalElement.addAttribute("publisher", "Willpower Co");
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 使用addElement方法向journal元素添加article子元素
Element articleElement = journalElement.addElement("article");
// 使用addAttribute方法向article元素添加level和date属性
articleElement.addAttribute("level", "Intermediate");
articleElement.addAttribute("date", "July-2006");
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 使用addElement方法向article元素添加title子元素
Element titleElement = articleElement.addElement("title");
// 使用setText方法设置title子元素的值
titleElement.setText("Dom4j Create XML Schema");
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 使用addElement方法向article元素添加authorElement子元素
Element authorElement = articleElement.addElement("author");
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 使用addElement方法向author元素添加firstName子元素
Element firstName = authorElement.addElement("fistname");
// 使用setText方法设置firstName子元素的值
firstName.setText("Yi");
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 使用addElement方法向author元素添加lastname子元素
Element lastName = authorElement.addElement("lastname");
// 使用setText方法设置lastName子元素的值
lastName.setText("Qiao");
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
XMLWriter output;
//输出格式化
OutputFormat format = OutputFormat.createPrettyPrint();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
try
{
output = new XMLWriter(new FileWriter(fileName), format);
output.write(document);
output.close();
rtn = true;
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
} catch (IOException e)
{
e.printStackTrace();
}
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
return rtn;
}
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
/** *//**
* 修改XML文件
* @author cnyqiao@hotmail.com
* @param fileName
* @param newFileName
* @date Jul 10, 2006 4:03:33 PM
* @return
*/
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
public boolean modiXMLFile(String fileName, String newFileName)
{
boolean rtn = false;
SAXReader reader = new SAXReader();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
try
{
Document document = reader.read(new File(fileName));
//用xpath查找对象
List list = document.selectNodes("/catalog/journal/@title");
Iterator itr = list.iterator();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
while(itr.hasNext())
{
Attribute attribute = (Attribute)itr.next();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
if(attribute.getValue().equals("XML Zone"))
{
attribute.setText("Modi XML");
}
}
//在journal元素中增加date元素
list = document.selectNodes("/catalog/journal");
itr = list.iterator();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
if(itr.hasNext())
{
Element journalElement = (Element)itr.next();
Element dateElement = journalElement.addElement("date");
dateElement.setText("2006-07-10");
dateElement.addAttribute("type", "Gregorian calendar");
}
//删除title接点
list = document.selectNodes("/catalog/journal/article");
itr = list.iterator();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
while(itr.hasNext())
{
Element articleElement = (Element)itr.next();
Iterator iter = articleElement.elementIterator("title");
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
while(iter.hasNext())
{
Element titleElement = (Element)iter.next();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
if(titleElement.getText().equals("Dom4j Create XML Schema"))
{
articleElement.remove(titleElement);
}
}
}
XMLWriter output;
OutputFormat format = OutputFormat.createPrettyPrint();
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
try
{
output = new XMLWriter(new FileWriter(newFileName), format);
output.write(document);
output.close();
rtn = true;
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
} catch (IOException e)
{
e.printStackTrace();
}
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
} catch (DocumentException e)
{
e.printStackTrace();
}
return rtn;
}
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
/** *//**
* @param args
*/
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
public static void main(String[] args)
{
ParseXml parseXml = new ParseXml();
String fileName = "d://dom4j.xml";
String newFileName = "d://modi.xml";
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
if(parseXml.createXMLFile(fileName))
{
System.out.println("Create XML File Success![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
");
}
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
if(parseXml.modiXMLFile(fileName, newFileName))
{
System.out.println("Modify XML File Success![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
");
}
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
}
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
}
在修改XML时,需要用到jaxen-1.1-beta-6.jar,这里http://sourceforge.net/project/showfiles.php?group_id=16035&package_id=14121&release_id=328664下载,记住下那个zip包啊,这个包里的lib下有上面提到的那个文件,放在classpath下即可
不然会报ClassNotFound异常