Android SaxParser XMLReader.parse()和InputSource参数

时间:2011-03-22 15:12:16

标签: android xml parsing saxparser

我正在尝试使用SaxParser解析我的xml文件资源。我已经创建了我的DataHandler,但我不知道如何向XmlReader指示res / xml /中的data.xml的位置。

InputSource对象的正确参数是什么?

    XmlResourceParser parser = getResources().getXml(R.xml.data);       
    SAXParserFactory spf = SAXParserFactory.newInstance();
    SAXParser sp = spf.newSAXParser();
    XMLReader xr = sp.getXMLReader();

    // Create handler to handle XML Tags ( extends DefaultHandler ) 
    DataSaxHandler myXMLHandler = new DataSaxHandler();
    xr.setContentHandler(myXMLHandler);
    //R.xml.data is my xml file
InputSource is=new InputSource(getResources().getXml(R.xml.data));  //getResources... is wrong say Eclipse

    xr.parse(is);       

非常感谢。

1 个答案:

答案 0 :(得分:1)

问题是对getResources()。getXml(int id)的调用是返回一个XmlResourceParser,并且没有采用XmlResourceParser的InputSource构造函数。

如果你想坚持使用SaxParser,你需要通过Resources#openRawResource(int id)打开一个InputStream,然后将它传递给InputSource构造函数。您还需要将文件移动到res / raw以使用openRawResource函数。