我正在尝试使用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);
非常感谢。
答案 0 :(得分:1)
问题是对getResources()。getXml(int id)的调用是返回一个XmlResourceParser,并且没有采用XmlResourceParser的InputSource构造函数。
如果你想坚持使用SaxParser,你需要通过Resources#openRawResource(int id)打开一个InputStream,然后将它传递给InputSource构造函数。您还需要将文件移动到res / raw以使用openRawResource函数。