Android SaxParser XMLReader.parse () и параметр InputSource - PullRequest
0 голосов
/ 22 марта 2011

Я пытаюсь проанализировать свой ресурс XML-файла с помощью SaxParser. Я создал свой DataHandler, но я не знаю, как указать XmlReader местоположение data.xml, которое находится в res / 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 Ответ

1 голос
/ 22 марта 2011

Проблема в том, что вызов getResources (). GetXml (int id) возвращает XmlResourceParser, и нет конструктора InputSource, который принимает XmlResourceParser.

Если вы хотите придерживаться SaxParser,вам нужно открыть InputStream через Resources # openRawResource (int id), а затем передать его конструктору InputSource.Вам также нужно переместить файл в res / raw, чтобы использовать функцию openRawResource.

...