Java 使用dom4j操作xml文檔

                                                  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

      網址:https://dom4j.github.io

      5.2 添加dom4j-2.0.2.jar包

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章