-2

I'm trying to read the xml file via XMLParser in Android.But at runtime I'm getting the some errors and warning oforg.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:318) at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:275) and com.test.SAXXMLParser.parse(SAXXMLParser.java:34)

Here is my XM:L File content

<menu>
  <item>
        <QNO>49</QNO>    
       <QUESTIONS>Which declaration of the main method below would allow a class to be started as a standalone program. Select the one correct answer.public class xyz {
   public static void main(String args[]) {
      for(int i = 0; i < 2; i++) {
         for(int j = 2; j>= 0; j--) {
            if(i == j) break;
            System.out.println("i=" + i + " j="+j);
         }
      }
   }
}</QUESTIONS>
        <ANSWER>35,35</ANSWER>
        <OPTIONA>35,35</OPTIONA>
        <OPTIONB>35,40</OPTIONB>
        <OPTIONC>36,32</OPTIONC>
        <OPTIOND>None of these</OPTIOND>
        <EXPLAINATION>NONE</EXPLAINATION>       
        <QUESTIONTYPE>JAVA</QUESTIONTYPE>
    </item>

    <item>
        <QNO>48</QNO>    
        <QUESTIONS>What all gets printed when the following code is compiled and run? Select the three correct answers.</QUESTIONS>

        <ANSWER>210</ANSWER>
        <OPTIONA>200</OPTIONA>
        <OPTIONB>205</OPTIONB>
        <OPTIONC>210</OPTIONC>
        <OPTIOND>220</OPTIOND>
        <EXPLAINATION>NONE</EXPLAINATION>       
        <QUESTIONTYPE>JAVA</QUESTIONTYPE>
    </item>
    </menu>

Here is my XMLParser code

public class SAXXMLParser
{

    public SAXXMLParser()
    {
    }

    public static Vector parse(InputStream inputstream) throws SAXException, ParserConfigurationException, IOException
    {
        Vector vector1;
        XMLReader xmlreader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
        SAXXMLHandler saxxmlhandler = new SAXXMLHandler();
        xmlreader.setContentHandler(saxxmlhandler);

        xmlreader.parse(new InputSource(inputstream));
        vector1 = saxxmlhandler.getDatabase();
        Vector vector = vector1;

        System.out.println((new StringBuilder("Vectore Length:::::::")).append(vector.size()).toString());
        Test_Demo.Vectore_mquestionDatabaseStructure = vector;
        return vector;
     }
}

Log cat shows the error at line = xmlreader.parse(new InputSource(inputstream)); Can someone help me how to solve this.

Here is Log Cat Information

09-26 12:10:56.011: W/System.err(350): org.apache.harmony.xml.ExpatParser$ParseException: At line 7, column 24: not well-formed (invalid token)
09-26 12:10:56.024: W/System.err(350):  at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:520)
09-26 12:10:56.024: W/System.err(350):  at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:479)
09-26 12:10:56.031: W/System.err(350):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:318)
09-26 12:10:56.031: W/System.err(350):  at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:275)
09-26 12:10:56.031: W/System.err(350):  at com.test.SAXXMLParser.parse(SAXXMLParser.java:34)
09-26 12:10:56.031: W/System.err(350):  at com.test.Test_Demo.onCreate(Test_Demo.java:85)
09-26 12:10:56.031: W/System.err(350):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-26 12:10:56.031: W/System.err(350):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
09-26 12:10:56.041: W/System.err(350):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-26 12:10:56.041: W/System.err(350):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-26 12:10:56.041: W/System.err(350):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-26 12:10:56.041: W/System.err(350):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 12:10:56.051: W/System.err(350):  at android.os.Looper.loop(Looper.java:123)
09-26 12:10:56.051: W/System.err(350):  at android.app.ActivityThread.main(ActivityThread.java:3683)
09-26 12:10:56.051: W/System.err(350):  at java.lang.reflect.Method.invokeNative(Native Method)
09-26 12:10:56.051: W/System.err(350):  at java.lang.reflect.Method.invoke(Method.java:507)
09-26 12:10:56.051: W/System.err(350):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-26 12:10:56.051: W/System.err(350):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-26 12:10:56.061: W/System.err(350):  at dalvik.system.NativeStart.main(Native Method)
09-26 12:10:56.071: D/AndroidRuntime(350): Shutting down VM
09-26 12:10:56.071: W/dalvikvm(350): threadid=1: thread exiting with uncaught exception (group=0x40015560)
09-26 12:10:56.106: E/AndroidRuntime(350):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
Remot
  • 1
  • 2

1 Answers1

0

The error is because .. {drum roll} .. it is not valid XML. This can be trivially tested in by XML validation, without needing for the Android application to abort itself.

Trivially, it cannot possibly well-formed because it contains a bare < and > tokens in it. XML does not support CDATA magically, unlike SCRIPT elements in HTML.

Either apply XML-entity escaping or use CDATA section. A proper XML editor would also help with correct encoding.

Community
  • 1
  • 1
user2864740
  • 60,010
  • 15
  • 145
  • 220