2011-03-22 115 views
3

我想使用Android上的saxParser解析xml文件。Android使用saxparser解析xml

這是我的xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<cars> 
    <car model="CitroenC3"> 
     <maintenances> 
      <xm:maintenance xmlns:xm="it.a.b.android.c.car.m" distance="" price=""> 
       <xm:type></xm:type> 
      </xm:maintenance> 
     </maintenances> 
     <chargings> 
      <xc:charging xmlns:xc="it.a.b.c.fuelconsumption.car.m" quantity="18" price="20" distance="400" consumption="14"/> 
     </chargings> 
    </car> 
</cars> 

這是代碼:

// Handling XML 
    SAXParserFactory spf = SAXParserFactory.newInstance(); 
    SAXParser sp = spf.newSAXParser(); 
    XMLReader xr = sp.getXMLReader(); 

    XmlResourceParser parser = getResources().getXml(R.xml.data); 

    // Create handler to handle XML Tags (extends DefaultHandler) 
    DataSaxHandler myXMLHandler = new DataSaxHandler(); 
    xr.setContentHandler(myXMLHandler); 
    InputStream is= getResources().openRawResource(R.xml.data); 
    xr.parse(new InputSource(is)); 

xr.parse後,我有例外:

03-22 15:24: 04.248:INFO/System.out(415):XML Pasing Excpetion =

org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: not well-formed (invalid token) 

什麼可能是錯誤的? 非常感謝。

+0

你堅持SAX解析器?你似乎沒有龐大的XML文件?我想你可能想看看vtd-xml作爲XML處理的最新技術。 – 2016-04-30 06:35:25

回答

6

AFAIR,res/文件夾下的任何xml文件在放入.apk之前編譯。 儘量把XML文件從那裏轉移到assets/文件夾,並加載它:

xr.parse(new InputSource(getAssets().open("data.xml"))); 
+0

我已經返回java.io.FileNotFoundException:data.xml – michele 2011-03-22 17:31:17

+0

data.xml是在資產文件夾......爲什麼! – michele 2011-03-22 17:39:20

+0

解決了我把這個文件放在資產的子目錄中 – michele 2011-03-22 18:41:08