【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了TextDom4jParseXML.java相关资料,希望对各位网友有所帮助!
package com.zf.s12;//创建一个包
import java.io.File;//引入类
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class TextDom4jParseXML {// 操作DOM4j处理XML文件的类
public static int createXMLFile(String filename) {// 创建XML文件
int returnValue = 0;// 返回操作结果, 0表失败, 1表成功
Document document = DocumentHelper.createDocument();// 创建document对象
Element treesElement = document.addElement("trees");// 创建XML文档的根trees
treesElement.addComment("This is a test for dom4j");// 加入一行注释
Element treeElement = treesElement.addElement("tree"); // 加入第一个tree节点
treeElement.addAttribute("id", "001");// 加入id属性内容
treeElement.addAttribute("name", "rongshu");// 加入name属性内容
Element descElement = treeElement.addElement("description");// 加入description节点
descElement.setText("It is a big tree");// 为description设置内容
treeElement = treesElement.addElement("tree");// 类似的完成后两个tree
treeElement.addAttribute("id", "002");
treeElement.addAttribute("name", "yangshu");// 加入name属性内容
descElement = treeElement.addElement("description");
descElement.setText("The tree grows taller from day to day");
treeElement = treesElement.addElement("tree");
treeElement.addAttribute("id", "003");// 加入id属性内容
treeElement.addAttribute("name", "songshu");// 加入name属性内容
descElement = treeElement.addElement("description");
descElement.setText("The tree is very beautiful");
Element ownerElement = treesElement.addElement("flower");// 加入flower节点
ownerElement.setText("rose");//节点内容
try {
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));// 创建XML写对象
writer.write(document);// 将document中的内容写入文件中
writer.close();// 流关闭
returnValue = 1;// 执行成功,需返回1
} catch (Exception ex) {// 捕获异常
ex.printStackTrace();
}
return returnValue;
}
public static void read(Document document) throws IOException {// 将文档内容输出到文件或控制台
XMLWriter writer = new XMLWriter(// 将文档内容输出到文件
new FileWriter("F:/output.xml"));
writer.write(document);//将document中的内容写入文件
writer.close();
OutputFormat format = OutputFormat.createPrettyPrint();//将文档内容缩进式输出到控制台
writer = new XMLWriter(System.out, format);
writer.write(document);
format = OutputFormat.createCompactFormat();//将文档内容紧凑式输出到控制台
writer = new XMLWriter(System.out, format);
writer.write(document);
}
public static Document getDocument(String fileName) throws IOException,
DocumentException {// 获取Document
SAXReader saxReader = new SAXReader();//创建对象
Document document = saxReader.read(new File(fileName));//读取文件获得Document
return document;
}
public static boolean delete(String fileName, String id) throws IOException,
DocumentException {// 根据编号不同进行删除
boolean returnValue = false;
Document document = getDocument(fileName);//调用方法获取Document
Element root = document.getRootElement();//获得根节点
List list = document.selectNodes("/trees/tree/@id");//获得编号列表
Iterator iter = list.iterator();
while (iter.hasNext()) {//循环获得编号属性信息
Attribute attribute = (Attribute) iter.next();
if (attribute.getValue().equals(id)) {//判断编号是否与指定编号相同
Element element = attribute.getParent();//获得属性的根节点
root.remove(element);//移除节点
}
}
try {
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(
fileName)));//将document中的内容写入文件中
writer.write(document);
writer.close();
returnValue = true;//执行成功,需返回true
} catch (Exception ex) {//捕获异常
ex.printStackTrace();
return returnValue;
}
return returnValue;
}
public static int update(String fileName, String newName) {
int returnValue = 0;
try {
Document document = getDocument(fileName);
// 将tree节点中name属性的内容如果是yangshu,则改为liushu
List list = document.selectNodes("/trees/tree/@name");//获得name属性列表
Iterator iter = list.iterator();
while (iter.hasNext()) {//循环获得name属性信息
Attribute attr = (Attribute) iter.next();
if (attr.getValue().equals("yangshu")) {//判断name属性的值
attr.setValue(newName);//重新设置新值
}
}
// 修改把flower项改为lily,并在flower节点上加入date节点内容:2009-04-10,还为date节点添加属性type
list = document.selectNodes("/trees/flower");//获得flower节点
iter = list.iterator();
if (iter.hasNext()) {//判断获得节点信息
Element flower = (Element) iter.next();
flower.setText("lily");//重新设置节点名称
Element date = flower.addElement("date");//在节点flower上加入date节点
date.setText("2009-04-10");//date节点的内容
date.addAttribute("type", "calendar");//在date节点上加入type节点和节点内容
}
try {
XMLWriter writer = new XMLWriter(new FileWriter(new File(
fileName)));//将document中的内容写入文件中
writer.write(document);
writer.close();
returnValue = 1;//执行成功,需返回1
} catch (Exception ex) {//捕获异常
System.out.println("修改XML文件出错:"+ex.getMessage());
returnValue=0;
}
} catch (Exception e) {//捕获异常
System.out.println("修改XML文件出错:"+e.getMessage());
returnValue=0;
}
return returnValue;
}
public static int formatXML(String fileName, String encoding) {// 格式化XML文档并解决中文问题
int returnValue = 0;
try {
Document document = getDocument(fileName);//调用方法获得Document
XMLWriter writer = null;
OutputFormat format = OutputFormat.createPrettyPrint();// 格式化输出,类型与ID浏览一样
format.setEncoding(encoding);//指定XML编码方式
writer = new XMLWriter(new FileWriter(new File(fileName)), format);//将文档内容按指定编码格式输出到文件
writer.write(document);
writer.close();
returnValue = 1;
} catch (Exception e) {//捕获异常
System.out.println("格式化文档出错:"+e.getMessage());
returnValue=0;
}
return returnValue;
}
public static void toControl(String fileName,Document document){
try {
XMLWriter writer = new XMLWriter(// 将文档内容输出到文件
new FileWriter(fileName));
writer.write(doc
上一篇:
TextDisplay.java
下一篇:
学校党建工作论文