xml拉解析器资产xml

问题描述:

如何使用拉解析器解析资产文件夹中的本地XML文件?我无法让拉解析器工作。它总是抛出一个io异常。我想我无法获取文件的路径或连接到文件。xml拉解析器资产xml

+0

你会考虑解析器比拉等? – 2010-05-23 22:08:04

mixm,

我用不同的方法来从两个“资产”和“资源”中加载本地文件,而是要回答你的问题玩弄的要求(如没有其他人似乎都):

首先,无论是确保你的XML是在测试之前有效或关闭验证,这是你如何能做到这一点,在同一时间实例化一个拉解析器:

try { 
     XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
     factory.setValidating(false); 
     XmlPullParser myxml = factory.newPullParser(); 

然后打开XML文件,并设置为输入到您的解析器中:

 InputStream raw = getApplicationContext().getAssets().open("simple.xml"); 
     myxml.setInput(raw, null); 

现在设置您的拉环(或其它的,取决于你是否想要进行延期拉动或不,这是你的设计决策:

 int eventType = myxml.getEventType(); 
     while(eventType != XmlPullParser.END_DOCUMENT) { 
      if(eventType == XmlPullParser.START_DOCUMENT) { 

       Log.d(MY_DEBUG_TAG, "In start document"); 
      } 
      else if(eventType == XmlPullParser.START_TAG) { 
       Log.d(MY_DEBUG_TAG, "In start tag = "+myxml.getName()); 
      } 
      else if(eventType == XmlPullParser.END_TAG) { 
       Log.d(MY_DEBUG_TAG, "In end tag = "+myxml.getName()); 

      } 
      else if(eventType == XmlPullParser.TEXT) { 
       Log.d(MY_DEBUG_TAG, "Have text = "+myxml.getText()); 
      } 
      eventType = myxml.next(); 
     } 
    } catch (XmlPullParserException e) { 

注意myxml.getEventType(),你需要这样做来获得解析将会处理您正在拉动的类型事件。注意:为了便于阅读,省略了catch块。

测试在2.1以上,希望它有助于 -Frank