1 <?xml version="1.0" encoding="UTF-8"?> 2 <books> 3 <book id="1001"> 4 <name>红楼梦</name> 5 <author>曹雪芹</author> 6 <price>345.6</price> 7 </book> 8 <book id="1002"> 9 <name>西游记</name> 10 <author>吴承恩</author> 11 <price>102.8</price> 12 </book> 13 <book id="1003"> 14 <name>三国演义</name> 15 <author>罗贯中</author> 16 <price>200.6</price> 17 </book> 18 <book id="1004"> 19 <name>水浒传</name> 20 <author>施耐庵</author> 21 <price>108.6</price> 22 </book> 23 </books>
例2.
1、用了Map<String, Object> book表示一个book对象
2、用了List<Map<String,Object>> list存放一组book对象
1 package com.qf.pull; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 10 import org.xmlpull.v1.XmlPullParser; 11 import org.xmlpull.v1.XmlPullParserException; 12 import org.xmlpull.v1.XmlPullParserFactory; 13 14 public class Demo4_book { 15 16 public static void main(String[] args) throws XmlPullParserException, 17 IOException { 18 // TODO Auto-generated method stub 19 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 20 XmlPullParser parser = factory.newPullParser(); 21 parser.setInput(new FileInputStream("src/book.xml"), "utf-8"); 22 int type = parser.getEventType(); 23 Map<String, Object> book = null; 24 List<Map<String, Object>> list = null; 25 while (type != XmlPullParser.END_DOCUMENT) { 26 String tagName = parser.getName(); 27 switch (type) { 28 //不同于例1,也可以在文档开始的时候,实例化list对象,用于存放XML解析后的数据 29 case XmlPullParser.START_DOCUMENT: 30 list = new ArrayList<Map<String, Object>>(); 31 // System.out.println(tagName);//null 32 break; 33 case XmlPullParser.START_TAG: 34 // System.out.println(tagName); 35 if ("book".equals(tagName)) { 36 book = new HashMap<String, Object>(); 37 int count = parser.getAttributeCount();//假设有多个属性值 38 for (int i = 0; i < count; i++) { 39 String name = parser.getAttributeName(i);//比如"id" 40 String value = parser.getAttributeValue(i);//比如"1004" 41 book.put(name, value); 42 } 43 } else if ("name".equals(tagName)) { 44 book.put("name", parser.nextText()); 45 } else if ("author".equals(tagName)) { 46 book.put("author", parser.nextText()); 47 } else if ("price".equals(tagName)) { 48 book.put("price", Double.parseDouble(parser.nextText())); 49 } 50 break; 51 case XmlPullParser.END_TAG: 52 if ("book".equals(tagName)) { 53 list.add(book); 54 } 55 break; 56 } 57 58 type = parser.next(); 59 }// end while 60 for (Map<String, Object> map : list) { 61 System.out.println(map); 62 } 63 } 64 }