-
xmlSerializer.endTag(“”, “name”);
-
xmlSerializer.startTag(“”, “blog”);
-
xmlSerializer.text(persons[i].getBlog());
-
xmlSerializer.endTag(“”, “blog”);
-
xmlSerializer.endTag(“”, “person”);
-
}
-
xmlSerializer.endTag(“”, “root”);
-
xmlSerializer.endDocument();
-
} catch (XmlPullParserException e) { // XmlPullParserFactory.newInstance
-
e.printStackTrace();
-
} catch (IllegalArgumentException e) { // xmlSerializer.setOutput
-
e.printStackTrace();
-
} catch (IllegalStateException e) { // xmlSerializer.setOutput
-
e.printStackTrace();
-
} catch (IOException e) { // xmlSerializer.setOutput
-
e.printStackTrace();
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
-
savedXML(fileName, xmlWriter.toString());
-
return xmlWriter.toString();
-
}
运行结果:
3、Pull 解析 XML
pull方式,解析xml是通过 XmlPullParser 类实现
首先,通过XmlPullParser得到解析xml的实例 xpp
接着,通过 xpp设置输入 xpp.setInput(is, “utf-8”),声明定义保存xml信息的数据结构(如:Person数组)
然后,通过 xpp 解析 START_DOCUMENT、START_TAG、TEXT、END_TAG、END_DOCUMENT等
Code
[java] view plain copy print ?
-
/** Pull方式,解析 XML */
-
public String pullXMLResolve(){
-
StringWriter xmlWriter = new StringWriter();
-
InputStream is = readXML(fileName);
-
try {
-
// // 方式一:使用Android提供的实用工具类android.util.Xml
-
// XmlPullParser xpp = Xml.newPullParser();
-
// 方式二:使用工厂类XmlPullParserFactory的方式
-
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
-
XmlPullParser xpp = factory.newPullParser();
-
xpp.setInput(is, “utf-8”);
-
List personsList = null; // 保存xml的person节点
-
Person person = null;
-
StringBuffer xmlHeader = null; // 保存xml头部
-
String ele = null; // Element flag
-
int eventType = xpp.getEventType();
-
while(XmlPullParser.END_DOCUMENT != eventType) {
-
switch (eventType) {
-
case XmlPullParser.START_DOCUMENT:
-
personsList = new ArrayList(); // 初始化persons
-
xmlHeader = new StringBuffer(); // 初始化xmlHeader
-
break;
-
case XmlPullParser.START_TAG:
-
if(“root”.equals(xpp.getName())) {
-
String attrAuthor = xpp.getAttributeValue(0);
-
String attrDate = xpp.getAttributeValue(1);
-
xmlHeader.append(“root”).append(“\t\t”);
-
xmlHeader.append(attrAuthor).append(“\t”);
-
xmlHeader.append(attrDate).append(“\n”);
-
} else if(“person”.equals(xpp.getName())) {
-
person = new Person(); // 创建person实例
-
} else if(“id”.equals(xpp.getName())) {
-
ele = “id”;
-
} else if(“name”.equals(xpp.getName())) {
-
ele = “name”;
-
} else if(“blog”.equals(xpp.getName())) {
-
ele = “blog”;
-
} else {
-
ele = null;
-
}
-
break;
-
case XmlPullParser.TEXT:
-
if(null != ele) {
-
if(“id”.equals(ele)) {
-
person.setId(Integer.parseInt(xpp.getText()));
-
} else if(“name”.equals(ele)) {
-
person.setName(xpp.getText());
-
} else if(“blog”.equals(ele)) {
-
person.setBlog(xpp.getText());
-
}
-
}
-
break;
-
case XmlPullParser.END_TAG:
-
if(“person”.equals(xpp.getName())){
-
personsList.add(person);
-
person = null;
-
}
-
ele = null;
-
break;
-
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
小结
有了这么多优秀的开发工具,可以做出更高质量的Android应用。
当然了,“打铁还需自身硬”,想要写出优秀的代码,最重要的一点还是自身的技术水平,不然用再好的工具也不能发挥出它的全部实力。
在这里我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。
总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习
打铁还需自身硬”,想要写出优秀的代码,最重要的一点还是自身的技术水平,不然用再好的工具也不能发挥出它的全部实力。
在这里我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。
总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习
如果你有需要的话,可以点击这里领取