2014-09-26 3 views
-2

Я пытаюсь прочитать XML-файл с помощью XMLParser в Android. Но во время выполнения я получаю некоторые ошибки и предупреждение оorg.apache.harmony.xml.ExpatReader.parse (ExpatReader.java:318) в org.apache .harmony.xml.ExpatReader.parse (ExpatReader.java:275) и com.test.SAXXMLParser.parse (SAXXMLParser.java:34)не правильно сформирован (Invallid token) в Android?

Вот мой XM: L содержание файла

<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> 

Это мой XMLParser-код

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; 
    } 
} 

Лог cat показывает ошибку в строке = xmlreader.parse (новый InputSource (входной поток)); Может кто-нибудь помочь мне, как решить эту проблему.

Вот Войти Cat Информация

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) 

ответ

0

Ошибка в том, что .. {барабанная дробь} .. это не действительный XML. Это может быть тривиально проверено на XML validation, без необходимости для Android-приложения прервать себя.

Тривиально, он не может быть хорошо сформирован, потому что в нем есть голые значки < и >. XML делает не поддерживает CDATA магически, в отличие от элементов SCRIPT в HTML.

Либо применить XML-entity escaping, либо использовать CDATA section. Правильный редактор XML также поможет в правильном кодировании.

Смежные вопросы