0

我将本地 XML 文件放入res/raw,然后将其加载到InputStreamer对象中。它工作正常,我能够解析它的内容。

当我将相同的 XML 放入res/xml中时,我会XmlPullParserException说它找不到 START 标记。

我使用此代码填充InputStream对象:

 InputStream is = getResources().openRawResource(R.raw.data);

并且这一行从以下位置加载 XML /res/xml

InputStream is = context.getResources().openRawResource(R.xml.data); 

为什么会这样?如果第二种方法是错误的,那么目的是res/xml什么?

4

2 回答 2

0

getXML()不返回 anInputStream所以我不确定你的代码是如何编译的。它返回一个XMLResourceParser.

http://developer.android.com/reference/android/content/res/Resources.html#getXml(int)

返回一个 XmlResourceParser,您可以通过它读取给定资源 ID 的通用 XML 资源。

的目的/res/xml是它是一个方便的地方来存储 XML 并稍后解析它!有时你不需要InputStream:)

于 2013-07-08T17:21:30.337 回答
0

你可以这样读:

void parseXml(int xmlId){
    Resources res = context.getResources();
    //Xml parserer
    XmlResourceParser parser = res.getXml(xmlResource);

    while (parser.next() != XmlPullParser.END_DOCUMENT) {

         //A start tag is reached
         if(parser.getEventType() == XmlPullParser.START_TAG){

             //Which tag is
             if(parser.getName().equalsIgnoreCase("Name"){
                 //Do something when a <Name> tag is reached
                 //and so on ...
             }
         }

    }
}
于 2016-07-21T19:22:28.333 回答