Dom4j例子,非原创,出处不详


import java.io.File;
import java.io.*;
import java.util.*;
import java.util.List;

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;
import org.dom4j.DocumentException;

/**
* @author Holen Chen

*/

public class Work {

public Work() {

}

/**
* 建立一个XML文档,文档名由输入参数决定

* @param filename 需建立的文件名

* @return 返回操作结果, 0表失败, 1表成功

*/

public int createXMLFile(String filename) {

/** 返回操作结果, 0表失败, 1表成功 */

int returnValue = 0;

/** 建立document对象 */

Document document = DocumentHelper.createDocument();

/** 建立XML文档的根dates */

Element booksElement = document.addElement("dates");

/** 加入一行注释 */

booksElement.addComment("This is a test workDate, 2004.11.18");

/** 加入第一个workday节点 */

Element bookElement = booksElement.addElement("workday");

/** 加入day节点 */

Element titleElement = bookElement.addElement("day");

/** 设置属性 */
titleElement.addAttribute("flag", "yes");

/** 为title设置内容 */

titleElement.setText("2004-11-16");

/** 类似的完成后两个book
bookElement = booksElement.addElement("book");

bookElement.addAttribute("show","yes");

titleElement = bookElement.addElement("title");

titleElement.setText("Lucene Studing");

bookElement = booksElement.addElement("book");

bookElement.addAttribute("show","no");

titleElement = bookElement.addElement("title");

titleElement.setText("Lucene in Action");



加入owner节点

Element ownerElement = booksElement.addElement("owner");

ownerElement.setText("O'Reilly");

****************/

try {

/** 将document中的内容写入文件中 */

XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));

writer.write(document);

writer.close();

/** 执行成功,需返回1 */

returnValue = 1;

}
catch (Exception ex) {

ex.printStackTrace();

}

return returnValue;

}

/**
* 修改XML文件中内容,并另存为一个新文件

* 重点掌握dom4j中如何添加节点,修改节点,删除节点

* @param filename 修改对象文件

* @param newfilename 修改后另存为该文件

* @return 返回操作结果, 0表失败, 1表成功

*/

public int ModiXMLFile(String filename, String newfilename) {

int returnValue = 0;

try {

SAXReader saxReader = new SAXReader();

Document document = saxReader.read(new FileReader(new File(filename)));

/** 修改内容之一: 如果book节点中show参数的内容为yes,则修改成no */

/** 先用xpath查找对象 */

List list = document.selectNodes("/dates/workday/day/@flag");

Iterator iter = list.iterator();

while (iter.hasNext()) {

Attribute attribute = (Attribute) iter.next();

if (attribute.getValue().equals("yes")) {

attribute.setValue("no");

}

}

/**
* 修改内容之二:

* 并在workday节点中加入day节点,day节点的内容为2004-11-17,还为day节点添加一个参数flag

*/

list = document.selectNodes("/dates/workday");

iter = list.iterator();

if (iter.hasNext()) {

Element workdayElement = (Element) iter.next();

//ownerElement.setText("Tshinghua");

Element dayElement = workdayElement.addElement("day");

dayElement.setText("2004-11-17");

dayElement.addAttribute("flag", "false");

}

/** 修改内容之三: 若day内容为2004-11-16,则将属性falg设为false */

list = document.selectNodes("/dates/workday");

iter = list.iterator();

while (iter.hasNext()) {

Element workdayElement = (Element) iter.next();

Iterator iterator = workdayElement.elementIterator("day");

while (iterator.hasNext()) {

Element dayElement = (Element) iterator.next();

if (dayElement.getText().equals("2004-11-16")) {
List list1 = dayElement.attributes();
Iterator iter1 = list1.iterator();
while (iter1.hasNext()) {
Attribute attribute = (Attribute) iter1.next();
attribute.setValue("kkkkkkkkkkk");
}
}
}

}

try {

/** 将document中的内容写入文件中 */

XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)));

writer.write(document);

writer.close();

/** 执行成功,需返回1 */

returnValue = 1;

}
catch (Exception ex) {

ex.printStackTrace();

}

}
catch (Exception ex) {

ex.printStackTrace();

}

return returnValue;

}

/**
* 格式化XML文档,并解决中文问题

* @param filename

* @return

*/

public int formatXMLFile(String filename) {

int returnValue = 0;

try {

SAXReader saxReader = new SAXReader();

Document document = saxReader.read(new FileReader(new File(filename)));

XMLWriter output = null;

/** 格式化输出,类型IE浏览一样 */

OutputFormat format = OutputFormat.createPrettyPrint();

/** 指定XML字符集编码 */

format.setEncoding("GBK");

output = new XMLWriter(new FileWriter(new File(filename)), format);

output.write(document);

output.close();

/** 执行成功,需返回1 */

returnValue = 1;

}
catch (Exception ex) {

ex.printStackTrace();

}

return returnValue;

}
/**
* create one XML of file
* @param holiday String[]
* @param workday String[]
* @param filename String filename OF XML
*/
public void createXML(String[] holiday,String[] workday, String filename) {
Document document = DocumentHelper.createDocument();
Element booksElement = document.addElement("dates");
for (int i = 0; i < holiday.length; i++) {
Element bookElement = booksElement.addElement("holiday");
bookElement.addAttribute("flag", "yes");
bookElement.setText(holiday[i]);
}
for (int i = 0; i < workday.length; i++) {
Element bookElement = booksElement.addElement("holiday");
bookElement.addAttribute("flag", "no");
bookElement.setText(workday[i]);
}
try {
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));
writer.write(document);
writer.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public HashMap getXMLElement(String filename) throws FileNotFoundException,
DocumentException {
HashMap hs=new HashMap();
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new FileReader(new File(filename)));
Element root=document.getRootElement();
List list=root.elements("holiday");
if(list.isEmpty()){
return null;
}else{
Iterator it=list.iterator();
while(it.hasNext()){
Element holiday=(Element)it.next();
hs.put(holiday.getTextTrim(),holiday.attribute("flag").getValue());
}
return hs;
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值