android xml解析 XmlPullParser & XmlSerializer
来源:互联网 发布:协同过滤算法的研究 编辑:程序博客网 时间:2024/05/18 02:31
因为这两个类我也不是太常用,当用起时就忘记怎么用的了,所有写下这篇博客,以便用的时候可以直接粘过去用了。
XMlPullParser
1、 准备数据
数据是放在assets文件夹下的user.xml
<?xml version="1.0" encoding="utf-8"?><users> <user id="1"> <name>嬴政</name> <password>qing</password> </user> <user id="2"> <name>刘邦</name> <password>han</password> </user> <user id="3"> <name>司马昭</name> <password>jin</password> </user> <user id="4"> <name>杨坚</name> <password>sui</password> </user></users>
2、 解析
public void readXml(){ InputStream is = null; try { //获取文件输入流 is = getResources().getAssets().open("user.xml"); //得到解析器对象 XmlPullParser pullParser = Xml.newPullParser(); //把流设置给解析器 pullParser.setInput(is, "utf-8"); //得到第一个元素的事件类型 int eventType = pullParser.getEventType(); //如果不是文件结束事件,继续循环 while(eventType!=XmlPullParser.END_DOCUMENT){ switch (eventType) { //开始标签 case XmlPullParser.START_TAG: String name = pullParser.getName(); Log.e(TAG, "readXml1: " + name); if (name.equals("user")) { Log.e(TAG, "attribute2: "+ pullParser.getAttributeName(0) + ":" + pullParser.getAttributeValue(0)); } break; //文本标签 case XmlPullParser.TEXT: String text = pullParser.getText(); if(!TextUtils.isEmpty(text.trim())) Log.e(TAG, "readXml4: " + text); break; //结束标签 case XmlPullParser.END_TAG: Log.e(TAG, "readXml5: /" + pullParser.getName()); break; } //得到下一个标签的事件类型 eventType = pullParser.next(); } } catch (Exception e) { e.printStackTrace(); }finally{ try { is.close(); } catch (IOException e) { e.printStackTrace(); } }}
3、输出结果
XMlSerializer
1、 准备数据
private ArrayList<User> userList = new ArrayList<User>(); public void prepareData(){ for(int i=0; i<50; i++){ User user = new User(i, "李世民"+i, "abc"+i); userList.add(user); } }
2、进行写入
public void writeXml(){ FileOutputStream fis = null; try { //得到序列化xml的对象 XmlSerializer serializer = Xml.newSerializer(); //得到要写入到的文件输出流 fis = this.openFileOutput("user.xml", Context.MODE_APPEND); //设置编码和流 serializer.setOutput(fis, "UTF-8"); //xml文档头部 也就是 <?xml version="1.0" encoding="utf-8"?> serializer.startDocument("UTF-8", true); serializer.startTag(null, "users"); User user; //下面的null为命名空间,xml没有命名空间直接写null for(int i=0; i<userList.size(); i++){ user = userList.get(i); serializer.startTag(null, "user"); //写入开始标签 serializer.attribute(null, "id", user.getId()+""); //写入属性 serializer.startTag(null, "name"); serializer.text(user.getName()); //写入属性 serializer.endTag(null, "name"); serializer.startTag(null, "password"); serializer.text(user.getPassword()); serializer.endTag(null, "password"); serializer.endTag(null, "user"); //写入结束标签 } serializer.endTag(null, "users"); serializer.endDocument(); Log.e(TAG, "writeXml: 写入成功" ); } catch (Exception e) { e.printStackTrace(); }finally { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } }}
3、查看结果
在手机文件管理器中找到data/data/packagename/files/user.xml,文件,导出到桌面。
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><users><user id="0"><name>李世民0</name><password>abc0</password></user><user id="1"><name>李世民1</name><password>abc1</password></user><user id="2"><name>李世民2</name><password>abc2</password></user><user id="3"><name>李世民3</name><password>abc3</password></user><user id="4"><name>李世民4</name><password>abc4</password></user><user id="5"><name>李世民5</name><password>abc5</password></user><user id="6"><name>李世民6</name><password>abc6</password></user><user id="7"><name>李世民7</name><password>abc7</password></user><user id="8"><name>李世民8</name><password>abc8</password></user><user id="9"><name>李世民9</name><password>abc9</password></user><user id="10"><name>李世民10</name><password>abc10</password></user><user id="11"><name>李世民11</name><password>abc11</password></user><user id="12"><name>李世民12</name><password>abc12</password></user><user id="13"><name>李世民13</name><password>abc13</password></user><user id="14"><name>李世民14</name><password>abc14</password></user><user id="15"><name>李世民15</name><password>abc15</password></user><user id="16"><name>李世民16</name><password>abc16</password></user><user id="17"><name>李世民17</name><password>abc17</password></user><user id="18"><name>李世民18</name><password>abc18</password></user><user id="19"><name>李世民19</name><password>abc19</password></user><user id="20"><name>李世民20</name><password>abc20</password></user><user id="21"><name>李世民21</name><password>abc21</password></user><user id="22"><name>李世民22</name><password>abc22</password></user><user id="23"><name>李世民23</name><password>abc23</password></user><user id="24"><name>李世民24</name><password>abc24</password></user><user id="25"><name>李世民25</name><password>abc25</password></user><user id="26"><name>李世民26</name><password>abc26</password></user><user id="27"><name>李世民27</name><password>abc27</password></user><user id="28"><name>李世民28</name><password>abc28</password></user><user id="29"><name>李世民29</name><password>abc29</password></user><user id="30"><name>李世民30</name><password>abc30</password></user><user id="31"><name>李世民31</name><password>abc31</password></user><user id="32"><name>李世民32</name><password>abc32</password></user><user id="33"><name>李世民33</name><password>abc33</password></user><user id="34"><name>李世民34</name><password>abc34</password></user><user id="35"><name>李世民35</name><password>abc35</password></user><user id="36"><name>李世民36</name><password>abc36</password></user><user id="37"><name>李世民37</name><password>abc37</password></user><user id="38"><name>李世民38</name><password>abc38</password></user><user id="39"><name>李世民39</name><password>abc39</password></user><user id="40"><name>李世民40</name><password>abc40</password></user><user id="41"><name>李世民41</name><password>abc41</password></user><user id="42"><name>李世民42</name><password>abc42</password></user><user id="43"><name>李世民43</name><password>abc43</password></user><user id="44"><name>李世民44</name><password>abc44</password></user><user id="45"><name>李世民45</name><password>abc45</password></user><user id="46"><name>李世民46</name><password>abc46</password></user><user id="47"><name>李世民47</name><password>abc47</password></user><user id="48"><name>李世民48</name><password>abc48</password></user><user id="49"><name>李世民49</name><password>abc49</password></user></users>
这是直接导出的样子,利用IDE格式化之后会方便查看。
建议:使用XmlSerializer写入时,当写一个开始标签后就写一个结束标签,防止有标签漏掉如。如先写startTag(null, “user”)和endTag(null, “user”);然后再写中间的内容。
阅读全文
0 0
- android xml解析 XmlPullParser & XmlSerializer
- android XmlPullParser解析xml
- android 解析xml -XmlPullParser
- Android-XmlPullParser解析XML
- Android解析XML之XmlPullParser
- Xml、XmlPullparser解析数据Android
- android xml解析之XmlPullParser
- Android中XML解析之XMLPullParser解析
- android xml解析 XmlPullParser的使用
- Android解析XML文档之XmlPullParser
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- android xml解析 XmlPullParser的使用
- Android 解析XML文件 XmlPullParser 方法
- android xml解析 XmlPullParser的使用
- android解析xml文件之XmlPullParser
- android xml解析 XmlPullParser的使用
- 腾讯2017暑期实习生编程题之构造回文
- Mybatis配置文件遇到java.lang.Integer can not found问题
- Android 操作系统的内存回收机制
- html5第九课时,声明变量
- [leetcode]: 107. Binary Tree Level Order Traversal II
- android xml解析 XmlPullParser & XmlSerializer
- Android中给定一个日期判断是周几.
- cmath
- 使用JAVA写的一个简易TCP通讯程序(一)
- 5040655.html
- html5第九课时,number数据类型
- 应用系统性能测试六大步
- 有用的git指令
- delphi LPT1端口打印与开钱箱