解析Xml有三种方式可选,sax ,dom ,pull ,,各有各的优点,但在android上是不推荐使用DOM来解析的 一般都用SAX和PULL 这两个性能相近, SAX的解析方式大家可以去看MARS的教程 讲的也比较好喔 PULL的话我个人觉得处理事件比较简单,所以就给不懂的同学详细讲讲,嘿嘿....希望大家都能明白 感谢 传智的张老师,黎老师, 感谢勇军哥 首先给大家看看我的笔记 那么我们就开始吧 很简单,这是我们要解析的xml文件,直接放在src之下 1. 2.
3. 4. 伍业雄 5. 22 6. 7. 8. 陈俊安 9. 21 10. 11. 12. 王世铭 13. 22 14. 15. 16. 复制代码 写个bean 嘿嘿.<我都没学java web 原来这东西叫Bean> 1. 2. package tree.love.bean; 3. import java.io.Serializable; 4. public class Person implements Serializable{ 5. private int id ; 6. private String name ; 7. private int age ; 8. public int getId() { 9. return id; 10. } 11. public void setId(int id) { 12. this.id = id; 13. } 14. public String getName() { 15. return name; 16. } 17. public void setName(String name) { 18. this.name = name; 19. } 20. public int getAge() { 21. return age; 22. } 23. public void setAge(int age) { 24. this.age = age; 25. } 26. public Person(){} 27. public Person(String name ,int age ) 28. { 29. this.name = name ; 30. this.age = age ; 31. } 32. @Override 33. public String toString() { 34. 35. return this.name +",,"+this.age; 36. } 37. 38. } 复制代码 然后这就是解析xml的代码了.返回一个List
1. 2. package tree.love.xmlUitl; 3. import java.io.IOException; 4. import java.io.InputStream; 5. import java.util.ArrayList; 6. import java.util.List; 7. import org.xmlpull.v1.XmlPullParser; 8. import org.xmlpull.v1.XmlPullParserException; 9. import tree.love.bean.Person; 10. import android.util.Log; 11. import android.util.Xml; 12. public class MyPullxml { 13. 14. private static final String XMLPULL_INFO = "XmlPull_Info"; 15. public static List getDate(InputStream inStream) 16. { 17. List persons = null ; 18. Person currentPerson = null ; 19. 20. /** 21. * android给我们提供了一个工具类'Xml' 22. * 通过这个工具类可以很方便地去new一个Pull的解析器,返回类型是XmlPullParser 23. * 24. **/ 25. XmlPullParser xmlPull = Xml.newPullParser(); 26. 27. try { 28. /** 29. * 提供的xml内容方式都是以输入流的方式InputStream 30. **/ 31. xmlPull.setInput(inStream,"UTF-8"); 32. /** 33. * 触发事件getEventType() =>返回事件码 34. * 当它遇到某个字符,如果符合xml的语法
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
. 35. * 它就会出发这个语法所代表的数字 36. * Returns the type of the current event (START_TAG, END_TAG, TEXT, etc.) 37. **/ 38. int eventCode = xmlPull.getEventType(); 39. 40. /** 41. * 解析事件: 42. * StartDocument,文档开始 43. * Enddocument,文档结束 44. * 45. * 每次读到一个字符,就产生一个事件 46. * 只要解析xml文档事件不为空,就一直往下读 47. **/ 48. while (eventCode != XmlPullParser.END_DOCUMENT) 49. { 50. switch (eventCode) 51. { 52. 53. case XmlPullParser.START_DOCUMENT: //文档开始事件,可以做一些数据初始化处理 54. persons = new ArrayList(); 55. break; 56. 57. case XmlPullParser.START_TAG://元素开始. 58. String name = xmlPull.getName(); 59. if(name.equalsIgnoreCase("student")) 60. { 61. currentPerson = new Person(); 62. currentPerson.setId(new Integer(xmlPull.getAttributeValue(null, "id"))); 63. } 64. else if(currentPerson != null) 65. { 66. if(name.equalsIgnoreCase("name")) 67. { 68. currentPerson.setName(xmlPull.nextText()); 69. } 70. else if(name.equalsIgnoreCase("age")) 71. { 72. currentPerson.setAge(new Short(xmlPull.nextText())); 73. } 74. } 75. break; 76. case XmlPullParser.END_TAG: //元素结束, 77. 78. if(currentPerson != null && xmlPull.getName().equalsIgnoreCase("student")) 79. { 80. persons.add(currentPerson); 81. currentPerson = null ; 82. } 83. break; 84. } 85. eventCode = xmlPull.next();//进入到一下一个元素. 86. } 87. } catch (XmlPullParserException e) { 88. 89. Log.i(XMLPULL_INFO, e.toString()); 90. } catch (IOException e) { 91. 92. Log.i(XMLPULL_INFO, e.toString()); 93. } 94. return persons; 95. } 96. } 复制代码 最后xml的数据这东西 写好之后最好能用Android Junit 一下.再与之数据交互 ,放进listView 或者Gridview 1. package tree.love.action; 2. 3. import java.io.InputStream; 4. import java.util.List; 5. 6. import tree.love.bean.Person; 7. import tree.love.xmlUitl.MyPullxml; 8. import android.test.AndroidTestCase; 9. import android.util.Log; 10. 11. public class xmlText extends AndroidTestCase { 12. public void PullXmlText() throws Exception 13. { 14. InputStream instream = this.getClass().getClassLoader().getResourceAsStream("student.xml"); 15. 16. List persons = MyPullxml.getDate(instream); 17. 18. for(Person person : persons) 19. { 20. Log.i("XML", person.toString()); 21. } 22. } 23. }