XmlPullParser异常 - 无法解决它

时间:2012-06-18 03:34:08

标签: android xmlpullparser

我有一个基本方法 - ReadXML() - 从assets文件夹中读取xml文件。运行时不会抛出任何异常。但是从这个方法中我调用了一个doXML()方法,它尝试从xml文件中提取文本并将此文本设置为textviews。当doXML()方法运行时,我不断收到以下错误...生成的错误是

18:19:41.654: W/System.err(329): org.xmlpull.v1.XmlPullParserException: name expected (position:START_TAG @59:57 in java.io.InputStreamReader@44f049c8).

我试图缩短xml文件以查看错误的位置......本质上,如果有四个“试验”,每个都带有标题,作者等,前三个实际上会加载到textviews中......尽管在LogCat中仍会生成上面的错误...但最后一个错误不会加载...所以代码逻辑可能存在问题,但无法解决。

提前感谢。

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

我认为代码可能比它需要的更复杂......但是无法弄清楚为什么doXML()方法无法正常运行。

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


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 个答案:

没有答案