2

我有一个基本方法 - 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();
        }
    }
4

0 回答 0