2012-03-15 39 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