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[] {});