Java 使用dom4j操作xml文档
一、简述
记--使用dom4j-2.0.2操作xml文档。创建xml文档,读取数据,包括添加、修改、删除、读取数据。
二、效果
三、工程结构
四、源文件
XmlTest.java文件
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import org.dom4j.Document;
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 XmlTest {
//保存xml文档
public static void saveXmlDocument(Document document) throws Exception {
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");//设置编码
String fileName = document.getName().replace("file:///", "");//file:///D:/Proj/MyEclipse85/XmlTest/test.xml
//System.out.println(fileName);
XMLWriter writer = new XMLWriter(new FileOutputStream(fileName), format);
writer.write(document);
writer.flush();
writer.close();
}
public static void main(String[] args) {
String fileName = "test.xml";
try {
File file = new File("test.xml");
if(!file.exists())//文件不存在
{
// 创建test.xml
Document newDocument = DocumentHelper.createDocument();
//添加根节点
Element root = newDocument.addElement("Fruits");
//添加子节点
Element elmentApple = root.addElement("Apple");
elmentApple.addElement("describe").addText("红彤彤的苹果");
elmentApple.addElement("price").addText("8元/斤");
Element elmentOrange = root.addElement("Orange");
elmentOrange.addElement("describe").addText("黄澄澄的橙子");
elmentOrange.addElement("price").addText("6元/斤");
Element elmentGrape = root.addElement("Grape");
elmentGrape.addElement("describe").addText("酸酸的葡萄");
elmentGrape.addElement("price").addText("10元/斤");
newDocument.setName(fileName);//设置文档名称
saveXmlDocument(newDocument);//保存到磁盘
System.out.println("首次创建"+fileName);
}
else
{
SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));
Element rootNode = document.getRootElement();//获取根节点
System.out.println(fileName+"的数据如下:");
System.out.println("根节点:"+rootNode.getName());
// 遍历子节点
for (Iterator<?> iterator = rootNode.elementIterator(); iterator.hasNext();) {
Element element = (Element)iterator.next();
String elementName = element.getName();
System.out.println(" " + elementName);//获取节点名称
int size = element.nodeCount();//获取子节点数目
for (int i = 0; i < size; i++) {//遍历二层子节点
Node nodeChild = element.node(i);
String typeName = nodeChild.getName();
if(typeName != null)
{
System.out.println(" "+typeName+":"+nodeChild.getText());
//修改数据
if(elementName.equals("Grape"))
{
if(typeName.equals("describe"))//修改描述
{
nodeChild.setText("又脆又甜的葡萄");
}
else if(typeName.equals("price"))//修改价格
{
nodeChild.setText("16元/斤");
}
}
}
}
//删除数据
if(elementName.equals("Orange"))
{
rootNode.remove(element);
}
}
//有改动数据就保存
saveXmlDocument(document);
}
}catch (Exception e) {
System.out.println("出现异常"+e.toString());
e.printStackTrace();
}
}
}
五、总结
5.1 下载dom4j-xxx.jar包
网盘:链接: https://pan.baidu.com/s/1mt6Gg-49DEc0nvNMS8M1xw 提取码: uhgm
5.2 添加dom4j-2.0.2.jar包