zoukankan      html  css  js  c++  java
  • 更新了XmlParser类

    还是发下GitHub地址吧,说不准有人感兴趣呢。

    https://github.com/mlxy

    代码:

      1 package com.mlxy.xml;
      2 
      3 import java.io.InputStream;
      4 import java.util.HashMap;
      5 import java.util.Map;
      6 
      7 import org.xmlpull.v1.XmlPullParser;
      8 
      9 import android.content.Context;
     10 import android.util.Xml;
     11 
     12 public class XmlParser {
     13     private Context parent;
     14     private XmlPullParser parser;
     15     private Map<String, String> map;
     16     private String result;
     17     
     18     
     19     public XmlParser(Context parent) {
     20         this.parent = parent;
     21         this.parser = Xml.newPullParser();
     22     }
     23     
     24     /** 
     25      * 根据对应的标签检索标签内的内容。
     26      * 
     27      * @param tag 节点名称
     28      * @return 返回标签内容,如果没有找到对应标签就返回空白字符。*/
     29     public String getContentByTag(String tag) throws Exception {
     30         // 初始化输入流,指定编码。
     31         InputStream in = parent.openFileInput(XmlFile.getFile().getName());
     32         parser.setInput(in, "UTF-8");
     33         result = "";
     34         
     35         // 第一次获取事件。
     36         int eventType = parser.getEventType();
     37 
     38         // 当指针没有到文档结束位置的时候。
     39         while (eventType != XmlPullParser.END_DOCUMENT) {
     40             // 如果发现了对应的标签就返回其中内容,然后跳出。
     41             if (eventType == XmlPullParser.START_TAG && tag.equalsIgnoreCase(parser.getName())) {
     42                 result = parser.nextText();
     43                 break;
     44             }
     45             
     46             // 否则就继续循环。
     47             eventType = parser.next();
     48         }
     49 
     50         //释放资源。
     51         in.close();
     52         return result;
     53     }
     54     
     55     /**
     56      * 根据给定的标签列表将对应的内容依次填入Map中并返回。
     57      * 
     58      * @param list 标签列表
     59      * @return map 标签与内容一一对应的映射。
     60      */
     61     public Map<String, String> getContentsByTags(String... tags) throws Exception {
     62         // 初始化输入流,指定编码。
     63         InputStream in = parent.openFileInput(XmlFile.getFile().getName());
     64         parser.setInput(in, "UTF-8");
     65         map = new HashMap<String, String>();
     66         
     67         String tagName = null;
     68         int nulls = 0;
     69         
     70         // 第一次获取事件。
     71         int eventType = parser.getEventType();
     72         
     73         // 当指针没有到文档结束位置的时候。
     74         while (eventType != XmlPullParser.END_DOCUMENT) {
     75             
     76             // 如果发现了标签开始处。
     77             if (eventType == XmlPullParser.START_TAG) {
     78                 // 记下当前标签的名称。
     79                 tagName = parser.getName();
     80                 
     81                 // 开始遍历数组。
     82                 for (int i = 0; i < tags.length; i++) {
     83                     // 如果当前位置是null,就进行下一项for循环。
     84                     if (tags[i] == null) {
     85                         nulls++;
     86                         continue;
     87                     }
     88                     
     89                     // 找到对应的标签就取出内容,添加进映射里。然后把数组的当前位置改为null并继续寻找下一个标签。
     90                     if (tags[i].equalsIgnoreCase(tagName)) {
     91                         map.put(tags[i], parser.nextText());
     92                         tags[i] = null;
     93                         break;
     94                     }
     95                     
     96                 }
     97                 
     98             }
     99             
    100             // 如果数组已经处理完毕就停止处理文档。
    101             if (nulls == tags.length) {
    102                 break;
    103             } else {
    104                 nulls = 0;
    105             }
    106             
    107             // 否则就继续循环。
    108             eventType = parser.next();
    109         }
    110 
    111         // 处理完毕,释放资源。
    112         in.close();
    113         
    114         return map;
    115     }
    116 }
    可变参数
  • 相关阅读:
    小丑火棘
    凤尾竹
    红王子锦带
    吊兰
    清香木
    鸢尾
    夏鹃
    牡丹吊兰
    美人蕉
    粉花绣线菊
  • 原文地址:https://www.cnblogs.com/chihane/p/3634885.html
Copyright © 2011-2022 走看看