读取Manifest中meta-data扩展元素数据,SAX/XmlPullParser解析XML

> SAX/XmlPullParser解析XML

SAX/XmlPullParser解析Mainfest.xml。

xml解析之XmlPullParser解析器- https://blog.csdn.net/zhjianglin/article/details/72353468
Xml解析 - XmlPullParser解析示例分析- https://blog.csdn.net/csdn_of_coder/article/details/73380495
AndroidManifest.xml字段解析- https://blog.csdn.net/victory08/article/details/40592147
public class SAXParserUtils {
    public static List<Person> readXML(InputStream inputStream) {
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser saxParser = spf.newSAXParser();
            XMLContentHandler handler = new XMLContentHandler();
            saxParser.parse(inputStream, handler);
            inputStream.close();
            return handler.getPersons();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static List<Person> readXML(InputSource inputSource) {
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser saxParser = spf.newSAXParser();
            XMLReader reader = saxParser.getXMLReader();
            XMLContentHandler handler = new XMLContentHandler();
            reader.setContentHandler(handler);
            reader.parse(inputSource);
            inputSource.getByteStream().close();
            return handler.getPersons();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

public class XmlPullParserUtils {
    public static List<Person> getPerson(InputStream xml) throws Exception {
        List<Person> persons =null;
        Person person = null;
        XmlPullParser pullParse = Xml.newPullParser();
        pullParse.setInput(xml,"UTF-8");
        int event = pullParse.getEventType();
        while(event!=XmlPullParser.END_DOCUMENT){
        switch (event) {
        case XmlPullParser.START_DOCUMENT:
            persons = new ArrayList<Person>();
            break;

        case XmlPullParser.START_TAG :
            if("person".equals(pullParse.getName())){
                int id =new Integer(pullParse.getAttributeValue(0));
                person = new Person();
                person.setId(id);
            }
            if("name".equals(pullParse.getName())){
                String name = pullParse.nextText();
                person.setName(name);
            }
            if("age".equals(pullParse.getName())){
                int age = new Integer(pullParse.nextText());
                person.setAge(age);
            }
            
            break;
            
        case XmlPullParser.END_TAG :
            if("person".equals(pullParse.getName())){
                persons.add(person);
                person = null;
            }
            
            break;
        }
       event = pullParse.next();
       
      }
        return persons;
    }
}

> Manifest中meta-data扩展元素数据

Android学习之 Manifest中meta-data扩展元素数据的配置与获取- https://blog.csdn.net/janice0529/article/details/41583587
Android 读取Manifest文件下Application 等节点下的meta-data自定义数据- https://blog.csdn.net/qduningning/article/details/41115759

Android获取Manifest中<meta-data>元素的值- https://blog.csdn.net/zhanghao_hulk/article/details/8662917

/**
 * 获取Manifest里面配置的渠道版本
 * <p>2014-11-14</p>
 * @return
 * @author RANDY.ZHANG
 */
public String getHaiwanVersion() {
    String channel = "";
    try {
        channel = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData.getString("HAIWAN_CHANNEL");
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    return channel;
}

/**
 * 在application应用<meta-data>元素
 * 在Activity应用<meta-data>元素
 * 在service应用<meta-data>元素
 * 在receiver应用<meta-data>元素
 */
private void getMetaData(){
    //在Activity应用<meta-data>元素。
    ActivityInfo info = this.getPackageManager()
            .getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
    info.metaData.getString("meta_name");

    //在application应用<meta-data>元素。
    ApplicationInfo appInfo = this.getPackageManager()
            .getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
    appInfo.metaData.getString("meta_name");

    //在service应用<meta-data>元素。
    ComponentName cn = new ComponentName(this, MetaDataService.class);
    ServiceInfo info = this.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA);
    info.metaData.getString("meta_name");

    //在receiver应用<meta-data>元素。
    ComponentName cn = new ComponentName(context, MetaDataReceiver.class);
    ActivityInfo info = context.getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA);
    info.metaData.getString("meta_name");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值