> 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");
}