XML解析PULL,月薪30K,浅谈Android消息机制原理

本文详细介绍了如何使用Pull解析方式在Android中解析XML,包括创建XmlPullParser实例,设置输入流,以及处理START_DOCUMENT、START_TAG、TEXT、END_TAG和END_DOCUMENT等事件。强调了自身技术水平对编写优秀代码的重要性。
摘要由CSDN通过智能技术生成
  1. xmlSerializer.endTag(“”, “name”);

  2. xmlSerializer.startTag(“”, “blog”);

  3. xmlSerializer.text(persons[i].getBlog());

  4. xmlSerializer.endTag(“”, “blog”);

  5. xmlSerializer.endTag(“”, “person”);

  6. }

  7. xmlSerializer.endTag(“”, “root”);

  8. xmlSerializer.endDocument();

  9. } catch (XmlPullParserException e) {        // XmlPullParserFactory.newInstance

  10. e.printStackTrace();

  11. } catch (IllegalArgumentException e) {      // xmlSerializer.setOutput

  12. e.printStackTrace();

  13. } catch (IllegalStateException e) {         // xmlSerializer.setOutput

  14. e.printStackTrace();

  15. } catch (IOException e) {       // xmlSerializer.setOutput

  16. e.printStackTrace();

  17. } catch (Exception e) {

  18. e.printStackTrace();

  19. }

  20. savedXML(fileName, xmlWriter.toString());

  21. return xmlWriter.toString();

  22. }

运行结果:

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 ?

  1. /** Pull方式,解析 XML  */

  2. public String pullXMLResolve(){

  3. StringWriter xmlWriter = new StringWriter();

  4. InputStream is = readXML(fileName);

  5. try {

  6. //          // 方式一:使用Android提供的实用工具类android.util.Xml

  7. //          XmlPullParser xpp = Xml.newPullParser();

  8. // 方式二:使用工厂类XmlPullParserFactory的方式

  9. XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

  10. XmlPullParser xpp = factory.newPullParser();

  11. xpp.setInput(is, “utf-8”);

  12. List personsList = null;      // 保存xml的person节点

  13. Person person = null;

  14. StringBuffer xmlHeader = null;          // 保存xml头部

  15. String ele = null;      // Element flag

  16. int eventType = xpp.getEventType();

  17. while(XmlPullParser.END_DOCUMENT != eventType) {

  18. switch (eventType) {

  19. case XmlPullParser.START_DOCUMENT:

  20. personsList = new ArrayList();        // 初始化persons

  21. xmlHeader = new StringBuffer();             // 初始化xmlHeader

  22. break;

  23. case XmlPullParser.START_TAG:

  24. if(“root”.equals(xpp.getName())) {

  25. String attrAuthor = xpp.getAttributeValue(0);

  26. String attrDate = xpp.getAttributeValue(1);

  27. xmlHeader.append(“root”).append(“\t\t”);

  28. xmlHeader.append(attrAuthor).append(“\t”);

  29. xmlHeader.append(attrDate).append(“\n”);

  30. } else if(“person”.equals(xpp.getName())) {

  31. person = new Person();          // 创建person实例

  32. } else if(“id”.equals(xpp.getName())) {

  33. ele = “id”;

  34. } else if(“name”.equals(xpp.getName())) {

  35. ele = “name”;

  36. } else if(“blog”.equals(xpp.getName())) {

  37. ele = “blog”;

  38. } else {

  39. ele = null;

  40. }

  41. break;

  42. case XmlPullParser.TEXT:

  43. if(null != ele) {

  44. if(“id”.equals(ele)) {

  45. person.setId(Integer.parseInt(xpp.getText()));

  46. } else if(“name”.equals(ele)) {

  47. person.setName(xpp.getText());

  48. } else if(“blog”.equals(ele)) {

  49. person.setBlog(xpp.getText());

  50. }

  51. }

  52. break;

  53. case XmlPullParser.END_TAG:

  54. if(“person”.equals(xpp.getName())){

  55. personsList.add(person);

  56. person = null;

  57. }

  58. ele = null;

  59. break;

  60. }

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

小结

有了这么多优秀的开发工具,可以做出更高质量的Android应用。

当然了,“打铁还需自身硬”,想要写出优秀的代码,最重要的一点还是自身的技术水平,不然用再好的工具也不能发挥出它的全部实力。

在这里我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

打铁还需自身硬”,想要写出优秀的代码,最重要的一点还是自身的技术水平,不然用再好的工具也不能发挥出它的全部实力。

在这里我也分享一份大佬自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

如果你有需要的话,可以点击这里领取

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值