1

使用 Eclipse 3.7.2 Android 2.3.3 / API 级别 10

我在读取 XML 文件时遇到问题。我“认为”我可以使用此代码正确处理文件并将其打开以进行输入/输出,因为我想读取信息,为用户显示,然后更新任何更改。

来自 c# 世界,当我阅读文件时,我看到了我不熟悉的行为。在调试透视图中,我的变量具有红色方块值。现在这可能没问题,但我的第一个想法是红色 == 麻烦?但是数据(调试透视图的变量窗口中的数据)似乎没问题,所以我继续。我的 eventType 为零,我输入了 case 语句,但随后我抛出了一个异常。现在我在这里丢球。我不知道如何获取有关 Java 异常的更多信息。例如,在 c# 世界中,我可以获得内部异常。我确信在 Java 中有一种我还没有学过的方法。

以下是步骤: 从第 1 行,我直接跳到第 9 行。F6(Eclipse 调试快捷方式“Step over”)将我带到第 4 行,F6再次回到第 9 行,F6最后一次,我抓住了一个通用异常。

  try
  {
      DataFileOut = new FileOutputStream(LiftFile);
      DataFileIn = new FileInputStream(LiftFile);
      InputStreamReader isr = new InputStreamReader(DataFileIn);        

      // auto-detect the encoding from the stream    
      parser.setInput(isr);    
      int eventType = parser.getEventType();    
      Category currentCategory = null;
      boolean done = false;    
      while (eventType != XmlPullParser.END_DOCUMENT && !done)
      {        
          String name = null;
  0       //eventType = 2;
  1       switch (eventType)
          {
  3         case XmlPullParser.START_DOCUMENT:
  4         break;

            case XmlPullParser.START_TAG:
        ....
       }
  9     eventType = parser.next();
   }
}

所以我的想法是我的 FileInputStream 句柄不好,或者我的 XML 文档格式不正确?还有其他想法吗?

<?xml version="1.0" encoding="UTF-8"?>
    <ExcersiseInformation>
       <Lifts count="6">
          <Lift>
       <ID>1001001</ID>
       <Name>Hammer Curls</Name>
       <PreviousLift>45</PreviousLift>
       <PreviousReps>8</PreviousReps>
       <SuggestLift>45</SuggestLift>
       <SuggestReps>10</SuggestReps>
       <ActualLift></ActualLift>
       <ActualReps></ActualReps>
          </Lift>
          .....
      </Lifts>
   </ExcersiseInformation>
4

1 回答 1

1

您的 xml 似乎格式正确。您是否使用处理程序和解析器类来获取 xml 标记内容?可能是达到它的最佳方法。你可以在互联网或其他帖子上找到一些很好的例子。请看一下我成功使用的相同方法

http://www.jondev.net/articles/Android_XML_SAX_Parser_Example

于 2012-04-25T15:41:48.817 回答