xml如下:
<providers_product> <provider id="netease_126" label="126" domain="126.com" largeicon="@drawable/provider_126_large" smallicon="@drawable/provider_126_small"> <incoming uri="imap+ssl+trustallcerts://imap.126.com" username="$user" /> <outgoing uri="smtp+ssl+trustallcerts://smtp.126.com" username="$user" /> </provider> <provider id="netease_yeah" label="yeah" domain="yeah.net" largeicon="@drawable/provider_yeah_large" smallicon="@drawable/provider_yeah_small"> <incoming uri="imap+ssl+trustallcerts://imap.yeah.net" username="$user" /> <outgoing uri="smtp+ssl+trustallcerts://smtp.yeah.net" username="$user" /> </provider> </providers_product>
ArrayList<Provider> providers = new ArrayList<Provider>(); try { XmlResourceParser xml = context.getResources().getXml(R.xml.providers_product); int xmlEventType; Provider provider = null; while ((xmlEventType = xml.next()) != XmlResourceParser.END_DOCUMENT) { //一级标签provider if (xmlEventType == XmlResourceParser.START_TAG && "provider".equals(xml.getName())) { provider = new Provider(); provider.id = getXmlAttribute(context, xml, "id"); provider.label = getXmlAttribute(context, xml, "label"); provider.domain = getXmlAttribute(context, xml, "domain"); provider.note = getXmlAttribute(context, xml, "note"); provider.largeIcon = getXmlAttribute(context, xml, "largeicon"); provider.smallIcon = getXmlAttribute(context, xml, "smallicon"); //二级标签incoming,outgoing } else if (xmlEventType == XmlResourceParser.START_TAG && "incoming".equals(xml.getName()) && provider != null) { provider.incomingUriTemplate = new URI(getXmlAttribute(context, xml, "uri")); provider.incomingUsernameTemplate = getXmlAttribute(context, xml, "username"); } else if (xmlEventType == XmlResourceParser.START_TAG && "outgoing".equals(xml.getName()) && provider != null) { provider.outgoingUriTemplate = new URI(getXmlAttribute(context, xml, "uri")); provider.outgoingUsernameTemplate = getXmlAttribute(context, xml, "username"); } else if (xmlEventType == XmlResourceParser.END_TAG && "provider".equals(xml.getName()) && provider != null) { providers.add(provider); } } } catch (Exception e) { Log.e(LOG_TAG, "Error while trying to load provider settings.", e); } return providers.toArray(new Provider[] {});