• Xml解析之PULL解析 例2


     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 }
    
    
    
    
    
  • 相关阅读:
    Google-C++编码规范中文版.pdf
    100个gdb小技巧(v1.0).pdf
    NSIS 3.0 发布,Windows 安装程序制作工具
    python爬取各类文档方法归类汇总
    【转】openwrt中ubus
    OpenWrt源码分析之ubus
    详解C语言中的fopen()函数和fdopen()函数
    IPsec技术介绍(转)
    mxml 详解
    Delphi IDE Theme Editor, Delphi IDE 主题编辑器,支持D7~Rad Studio 10.3 RIO及Lazarus
  • 原文地址:https://www.cnblogs.com/touchmore/p/4992981.html
Copyright © 2020-2023  润新知