XmlResourceParser解析XML

来源:互联网 发布:java logger 占位符 编辑:程序博客网 时间:2024/05/16 01:16

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