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包