2012-03-15 63 views
3

我在res/xml文件夾中有一個XML文件(config.xml),我需要解析這個XML。 爲此,我使用SAXParser。我想是這樣的:如何從項目資源解析xml android

SAXParserFactory factory = SAXParserFactory.newInstance(); 
SAXParser saxParser = factory.newSAXParser(); 
DefaultHandler handler = new DefaultHandler() { 
      //handler definition... 
}; 
Uri configUri = Uri.parse("android.resource://myPackageName/" + R.xml.config); 
saxParser.parse(configXML.toString(), handler); 

但是,這並不工程...

解析方法是具有下列參數:

URI內容的位置解析。

dh要使用的SAXDefaultHandler。

我應該使用URI還是Uri?有什麼區別?

+0

嗨使用'XmlResourceParser'而不是'SAXParser'解析資源 – 2012-03-15 19:06:47

回答

5

我在res/XML文件夾中的XML文件(config.xml),我需要解析此XML

呼叫getResources().getXml(R.xml.config)。您將會收到一個XmlResourceParser,它跟在XmlPullParser API之後。正如XmlPullParser JavaDocs所示,你風與這樣的代碼:

 XmlResourceParser xpp=getResources().getXml(R.xml.config); 
    int eventType = xpp.getEventType(); 

    while (eventType != XmlPullParser.END_DOCUMENT) { 
     if (eventType == XmlPullParser.START_DOCUMENT) { 
      // do something 
     } else if (eventType == XmlPullParser.START_TAG) { 
      // do something 
     } else if (eventType == XmlPullParser.END_TAG) { 
      // do something 
     } else if (eventType == XmlPullParser.TEXT) { 
      // do something 
     } 
     eventType = xpp.next(); 
    } 

 

要做到這一點,我使用的SAXParser

即使你得到那個工作,它將會比使用XmlResourceParser慢10倍。

+0

非常感謝!這種方式它的作品... – amp 2012-03-16 20:54:50