【问题标题】:Passing XML resource to XMLReader将 XML 资源传递给 XMLReader
【发布时间】:2012-06-15 07:18:21
【问题描述】:

我正在尝试将.xml 文件从我的res 文件夹传递到XMLReader,以便将其解析为对象:

private void parseXML() {
    String parsedData = "";
       try {
           Log.w("AndroidParseXMLActivity", "Start");
           /** Handling XML */
           SAXParserFactory spf = SAXParserFactory.newInstance();
           SAXParser sp = spf.newSAXParser();
           XMLReader xr = sp.getXMLReader();

           QuestionXMLHandler myXMLHandler = new QuestionXMLHandler();
           xr.setContentHandler(myXMLHandler);
           InputSource inStream = new InputSource();
           Log.w("AndroidParseXMLActivity", "Parse1");

           inStream.setCharacterStream(new StringReader(getResources().getXml(R.xml.questions).toString()));
           Log.w("AndroidParseXMLActivity", "Parse2");

           xr.parse(inStream);
           Log.w("AndroidParseXMLActivity", "Parse3");

           ArrayList<QuestionMaster> questionList = myXMLHandler.getQuestionsList();
           for(int i=0;i<questionList.size();i++){
                QuestionMaster question = questionList.get(i);
                parsedData = parsedData + "----->\n";
                parsedData = parsedData + "Queston No: " + question.getQuestionNo() + "\n";
                parsedData = parsedData + "QuestionText: " + question.getQuestionText() + "\n";
                parsedData = parsedData + "CorrectAnswer: " + question.getQuestionText() + "\n";
                parsedData = parsedData + "WrongAnswer1: " + question.getQuestionText() + "\n";
                parsedData = parsedData + "WrongAnswer2: " + question.getQuestionText() + "\n";
                parsedData = parsedData + "WrongAnswer3: " + question.getQuestionText() + "\n";
                parsedData = parsedData + "Answered: " + question.isAnswered() + "\n";
                parsedData = parsedData + "QuestionText: " + question.isAnsweredCorrectly() + "\n";
            }
            Log.w("AndroidParseXMLActivity", "Done");
        }catch (Exception e) {
            Log.w("AndroidParseXMLActivity",e );
        }
        xmlOutput.setText(parsedData);
    }
}

我确定是这条线:

inStream.setCharacterStream(new StringReader(getResources().getXml(R.xml.questions).toString()));

有人可以指导我将这个.xml 文件传递​​给XMLReader

编辑

改成:

InputSource inStream = new InputSource(getResources().openRawResource(R.raw.questions));

【问题讨论】:

    标签: android xml xml-parsing sax xmlreader


    【解决方案1】:

    我认为您应该将文件放在原始文件夹或资产文件夹中以使用 SAX 解析器,然后使用上下文从那里读取该文件

    Android - 从资产中读取文件 http://www.javacodegeeks.com/2012/02/android-read-file-from-assets.html

    【讨论】:

      【解决方案2】:
      InputStream inStream = getResources().openRawResource(R.raw.questions);
      xr.parse(inStream);
      

      【讨论】:

      • 感谢您的帮助,但是当我使用您的更改时,我得到:XMLReader 类型中的方法 parse(InputSource) 不适用于参数 (InputStream)
      【解决方案3】:

      getXml() 返回XmlPullParser 的实现,因此它已经设置为parsed using that engine。将现有代码更改为使用 XmlPullParser 而不是 SAX。

      【讨论】:

        猜你喜欢
        • 2011-10-17
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多