2012-06-16 31 views
0

因此,在对代码进行审查时,读取xml时不会引发异常......正常工作。Android中的XmlPullParser问题

public void ReadXML() throws XmlPullParserException, IOException 
    { 

     factory = XmlPullParserFactory.newInstance(); 
     factory.setNamespaceAware(false); 
     xpp = factory.newPullParser(); 

     InputStream raw = getApplicationContext().getAssets().open("trial_info.xml"); 
     xpp.setInput(raw,null); 
    } 
} 

的问题是在doXML方法,其中我试图阅读文本的B/W两个标签... 如。

<trial> 
<title>The Book</title> 
<author></author> 
.... 
</trial> 

所生成的错误是18:19:41.654:W/System.err的(329):org.xmlpull.v1.XmlPullParserException:名称预期的(位置:START_TAG @ 59:57的java.io .InputStreamReader @ 44f049c8)

我认为代码可能比它需要更复杂...但不能找出错误。谢谢

public void doXML() throws XmlPullParserException, IOException{ 


      int eventType = XmlPullParser.START_TAG; 

      while(eventType != XmlPullParser.END_DOCUMENT) 
      { 
       if(eventType == XmlPullParser.TEXT && xpp.getText().equals(selectedTrial)) 
       { 
        trialTxt = (TextView)findViewById(R.id.TrialAbbrevData); 
        trialTxt.setText(xpp.getText()); 
        Log.d("what is this", xpp.getText()); 

      while(!(eventType == XmlPullParser.END_TAG && xpp.getName().equals("..."))) 
        { 

      if(eventType == XmlPullParser.START_TAG && xpp.getName().equals("trialName")) 
         {  
         eventType = xpp.next(); 
         if(eventType == XmlPullParser.TEXT) 
         { 
          trialTxtDesc = (TextView)findViewById(R.id.TrialNameData); 
          trialTxtDesc.setText(xpp.getText()); 
          Log.d("in loop",xpp.getText()); 
         } 
         } 

     if(eventType == XmlPullParser.START_TAG && xpp.getName().equals("trialDetails")) 
         { 
         eventType = xpp.next(); 
         if(eventType == XmlPullParser.TEXT) 
         { 
          trialTxtConc = (TextView)findViewById(R.id.TrialDescData); 
          trialTxtConc.setText(xpp.getText()); 
         } 
         } 

     if(eventType == XmlPullParser.START_TAG && xpp.getName().equals("trialResults")) 
         { 
         eventType = xpp.next(); 
         if(eventType == XmlPullParser.TEXT) 
         { 
          trialTxtConc = (TextView)findViewById(R.id.TrialResultsData); 
          trialTxtConc.setText(xpp.getText()); 
         } 
         } 

     if(eventType == XmlPullParser.START_TAG && xpp.getName().equals("trialConclusion")) 
         { 
         eventType = xpp.next(); 
         if(eventType == XmlPullParser.TEXT) 
         { 
          trialTxtConc=(TextView)findViewById(R.id.TrialConclusionData); 
          trialTxtConc.setText(xpp.getText()); 
         } 
         } 

     if(eventType == XmlPullParser.START_TAG && xpp.getName().equals("whatItMeans")) 
         { 
          eventType = xpp.next(); 
          if(eventType == XmlPullParser.TEXT) 
          { 
          trialTxtMeans = (TextView)findViewById(R.id.TrialWIMData); 
          trialTxtMeans.setText(xpp.getText()); 
          } 
         } 

         eventType = xpp.next(); 

        }   



      } 
       eventType = xpp.next(); 
     } 
    } 
+0

你可以发布你的XML文件的第37-42行吗? –

+0

我认为如果您在标签中输入错误或不使用相同的字母大小写,就会发生这种情况。你有没有先尝试一个简短的测试XML文件? – Lumis

回答

0

错误消息似乎指示XML文件中的错误,而不是代码。