2011-03-22 77 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