全國免費熱線:
XML的解析與生成
作者:中國IT實驗室 點擊:15799次 日期:2012-09-14
字號::T | T
    Android平臺上可以使用 Simple API for XML (SAX), Document Object Model(DOM) 和Android 附帶的pull解析器 解析XML文件
   
    眾所周知,DOM解析方式很耗內存, 優先使用SAX或者pull
   
    SAX:
   
    解析速度快,占用內存少,采用事件驅動,即不需要加載完整個文檔,而是按內容順序解析文檔,在此過程中,其會判斷當前讀到的內容是否符合XML語法定義,如果符合就會觸發事件,所謂事件,其實就是一些callback方法,具體方法含義比較簡單, 看文檔即可,定義在DefaultHandler接口中(SAX已內置到JDK5.0中)
   
    待解析xml文件musics.xml:
   
    xml version=“1.0” encoding=“utf-8”?>
   
   
   
    黑色幽默name>
   
    ,故忽略這個因素
   
    */
   
    @Override
   
    public void characters(char[] ch, int start, int length)
   
    throws SAXException {
   
    if (null != music) {
   
    String str = new String(ch, start, length);
   
    if (“name”.equals(preTag)) {
   
    music.setName(str);
   
    } else if (“albumName”.equals(preTag)) {
   
    music.setAlbumName(str);
   
    } else if (“year”.equals(preTag)) {
   
    music.setYear(Integer.parseInt(str));
   
    }
   
    }
   
    }
   
    @Override
   
    public void endElement(String uri, String localName, String qName)
   
    throws SAXException {
   
    if (“music”.equals(localName) && null != music) {
   
    musics.add(music);
   
    music = null;
   
    }
   
    preTag = null;
   
    }
   
    @Override
   
    public void endDocument() throws SAXException {
   
    }
   
    public List getMusics() {
   
    return musics;
   
    }
   
    }
   
    對外提供SAX解析服務的接口SaxService:
   
    public class SaxService {
   
    public static List readXml(InputStream is) throws Exception {
   
    SAXParserFactory saxFactory = SAXParserFactory.newInstance();
   
    SAXParser parser = saxFactory.newSAXParser();//
   
    parser.setProperty(“http://xml.org/sax/features/namespaces”, true);
   
    SaxHandler handler = new SaxHandler();
   
    parser.parse(is, handler);
   
    return handler.getMusics();
   
    }
   
    }


[1]  

發表評論

昵稱 * 驗證碼 * 驗證碼
上一篇: >使用java編寫排序算法
下一篇: 常見JSP中文亂碼例子及其解決方法

資質證書

CMMI Ⅲ APPRAISAL ID:30062
ISO9001:08915Q20090ROS
ISO27001:04817I20037R0S
高新技術企業:GR201753000141

電子商務三位一體發展戰略

技術研發

業務培訓

實戰運營

戰略布局