xml文件解析

xml是用於存儲配置信息的文件。說到底xml文件就是一棵樹,一顆大大的樹,能存儲很多關係型的信息。有時候需要對xml文件進行讀寫等操作,那麼有什麼方法可以對其進行讀寫呢?

主要有兩種方式:一、使用DOM4J解析包對其進行讀寫   二.使用SAX解析包對其進行讀取,不可寫入

一,DOM4J解析包解析xml文檔(讀寫)

主要分爲一下幾個步驟:

1.獲取DOM解析器。DocumentBuilder documentBuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();

2.加載xml文檔。Document document=documentBuilder.parse("src/exam.xml");

3.創建或者獲取元素節點:Element nodeStudent=document.createElement("Student");   //獲取可以使用相應的getXXX方法

4.寫入到xml文檔:Transformer tf=TransformerFactory.newInstance().newTransformer();
   tf.transform(new DOMSource(document), new StreamResult("src/exam.xml"));

 

在使用DOM解析xml時,java中提供了很多方法來操作xml文檔,方法大體上與javascript中獲取元素節點和創建節點類似,沒有很大區別

 

二、SAX解析xml文檔

主要有一下幾個步驟:

1.獲取SAX解析器

2.獲取XML讀取器

3.註冊內容處理器

4.加載xml文檔

 

實例:演示SAX解析的時機

package com.sax_parser;

import java.io.IOException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
/**
 * 演示SAX解析的各個時機
 * @author Administrator
 *
 */
public class SaxParser {

 /**
  * @param args
  * @throws SAXException
  * @throws ParserConfigurationException
  * @throws IOException
  */
 public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
  // TODO Auto-generated method stub
  //創建一個解析器
  SAXParser sax=SAXParserFactory.newInstance().newSAXParser();
  //獲取讀取器
  XMLReader reader=sax.getXMLReader();
  //註冊內容處理器
  reader.setContentHandler(new DefaultHandler(){
   /**
    * 開始讀取xml文檔時調用
    */
   @Override
   public void startDocument() throws SAXException {
    // TODO Auto-generated method stub
    System.out.println("開始讀取文檔了");
   }
   /**
    * 讀取完xml文檔時調用
    */
   @Override
   public void endDocument() throws SAXException {
    // TODO Auto-generated method stub
    System.out.println("文檔讀取結束了");
   }
   /**
    * 讀取標籤元素的開始標誌
    */
   @Override
   public void startElement(String uri, String localName,
     String qName, Attributes attributes) throws SAXException {
    // TODO Auto-generated method stub
    System.out.println(qName+"----標籤開始讀取了");
   }
   /**
    * 讀取標籤元素的結束標誌
    */
   @Override
   public void endElement(String uri, String localName, String qName)
     throws SAXException {
    // TODO Auto-generated method stub
    System.out.println(qName+"----標籤讀取結束了");
   }
   /**
    * 讀取標籤內容
    */
   @Override
   public void characters(char[] ch, int start, int length)
     throws SAXException {
    System.out.println("讀取到的字符是==="+new String(ch,start,length));
   }
   
  });
  //加載文檔
  reader.parse("src/exam.xml");
 }

}

讀取xml文檔主要有這兩種技術,但他們又有所區別,DOM技術是解析整個xml文檔後再讀寫,讀寫速度快,但佔用大量的內存空間。SAX是邊解析邊讀取,佔用內存不大,但效率低些

 

發佈了66 篇原創文章 · 獲贊 13 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章