(1)在main路径下,创建assets目录,存放待解析的xml文件.
如:/app/src/main/assets/app_list.xml
<?xml version="1.0" encoding="utf-8"?>
<applist enable="true">
<package name="com.tencent.mm" intime="false"/>
<package name="com.ss.android.article.news" intime="true"/>
<package name="com.netease.cloudmusic" intime="true"/>
<package name="com.moji.mjweather" intime="true"/>
<package name="cn.wps.moffice_eng" intime="false"/>
</applist>
(2)创建对象,存放解析出来的信息.
public class AppInfo {
private String name;
private boolean intime;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setIntime(boolean intime) {
this.intime = intime;
}
public boolean getIntime() {
return intime;
}
@Override
public String toString() {
return "AppInfo{" +
"name='" + name + '\'' +
", intime=" + intime +
'}';
}
}
(3)解析数据
public class MainActivity extends AppCompatActivity {
private List<AppInfo> appInfoList = new ArrayList<>();
private boolean enable = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
parse();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void parse() throws XmlPullParserException, IOException {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser pullParser = factory.newPullParser();
InputStream inputStream = getAssets().open("app_list.xml");
pullParser.setInput(inputStream, null);
int eventType = pullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
eventType = pullParser.getEventType();
switch (eventType) {
case XmlPullParser.START_TAG:
String tagName = pullParser.getName();
if (tagName != null && tagName.equals("package")) {
AppInfo appInfo= new AppInfo();
String name = pullParser.getAttributeValue("", "name");
boolean isIntime = Boolean.parseBoolean(pullParser.getAttributeValue("", "intime"));
appInfo.setName(name);
appInfo.setIntime(isIntime);
appInfoList.add(appInfo);
} else if (tagName.equals("applist")) {
if("false".equals(pullParser.getAttributeValue(null,"enable"))){
enable = false;
}
}
break;
default:
break;
}
eventType = pullParser.next();
}
}
}