java解析xml檔案:建立、讀取、遍歷、增刪查改、儲存
阿新 • • 發佈:2019-02-04
全棧工程師開發手冊 (作者:欒鵬)
java使用JDOM介面解析xml檔案,包含建立、增刪查改、儲存,讀取等操作。
需要引入jdom.jar,下載
xercesImpl.jar,下載
測試程式碼
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import java.io.*;
import java.util.List;
public static void main(String[] args) {
Document docjdom = creat_xml();
save_xml(docjdom,"book1.xml" );
read_xml("book1.xml");
}
建立,增刪查改xml元素,獲取元素列表,修改元素內容,刪除子元素等操作。
//使用jdom操作xml檔案,新增節點,刪除節點,查詢。修改,儲存
public static Document creat_xml()
{
String[] strChapter = { "基礎知識", "圖形介面", "圖形處理", "I/O操作", "網路程式設計", "資料庫" };
Element elmtRoot = new Element("book"); //根目錄
Document docJDOM = new Document(elmtRoot);
//新建元素
for(int i=0; i<6; i++)
{
//宣告新元素
Element elmtChapter = new Element("Chapter");
//新增內容
elmtChapter.addContent(strChapter[i]);
//構造屬性,並新增到元素中
Attribute a=new Attribute("id",new Integer(i).toString());
elmtChapter.addAttribute(a);
//將元素新增到根節點下
elmtRoot.addContent(elmtChapter);
}
//獲取元素列表
List lstChapter = elmtRoot.getChildren("Chapter");
//刪除第4個元素
lstChapter.remove(4);
//獲取子元素
Element dd=(Element)lstChapter.get(0);
//修改元素內容
dd.setContent("11111");
//輸出
return docJDOM;
}
儲存xml檔案,輸入為Document物件 ,和xml檔案儲存地址
public static void save_xml(Document docXML, String filepath)
{
//使用JDOM的XML輸出
XMLOutputter fmt = new XMLOutputter();
try {
//宣告使用GB2312字符集
fmt.setEncoding("GB2312");
//可以換行
fmt.setNewlines(true);
//輸出檔案物件
FileWriter fwXML = new FileWriter(filepath);
fmt.output(docXML, fwXML);
fwXML.close();
}catch (IOException e) {
e.printStackTrace();
}
}
讀取遍歷xml元素
//構造器,實現XML檔案解析
public static void read_xml(String filepath)
{
Document docJDOM;
//利用SAX建立Document
SAXBuilder bSAX = new SAXBuilder(false);
try {
//生成document物件
docJDOM = bSAX.build(new File(filepath));
}catch (JDOMException e) {
e.printStackTrace();
return;
}
//得到Document的根(節點名:book)
Element root = docJDOM.getRootElement();
System.out.println("根節點標記名:" + root.getName());
System.out.println("*****下面遍歷XML元素*****");
//獲得Chapter元素集合
List list = root.getChildren("Chapter"); //getChildren返回的是列表,及時在xml中可能只有一個子元素
//遍歷Chapter元素
for (int i=0; i < list.size() ; i++)
{
//獲得Chapter的元素
Element element = (Element)list.get(i);
//獲得ID屬性
String id = element.getAttributeValue("id");
//獲得Chapter元素的值
String content = element.getText();
System.out.println("ID:" + id + " " +"內容:" + content);
}
}