XmlResourceParser解析XML

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


你可能感兴趣的:(xml,exception,ssl,user,null,domain)