1. 程式人生 > >java解析xml檔案:建立、讀取、遍歷、增刪查改、儲存

java解析xml檔案:建立、讀取、遍歷、增刪查改、儲存

全棧工程師開發手冊 (作者:欒鵬)

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);
      }
  }