getName()是获取解析器当前指向的元素的名称
那父元素用什么获取呀?

解决方案 »

  1.   

    直接上代码啦  LZ自己看下吧public static List<City> parseXml(String writeBack) throws Exception {
    byte[] bytes = writeBack.getBytes("UTF-8");
    ByteArrayInputStream is = new ByteArrayInputStream(bytes);
    XmlPullParser parser = Xml.newPullParser();
    parser.setInput(is, "utf-8");
    int type = parser.getEventType();
    int status = 0;
    List<City> cityList = null;
    String level = "0";
    String parentId = "0";
    while (type != XmlPullParser.END_DOCUMENT) {
    switch (type) { case XmlPullParser.START_DOCUMENT:
    City mCity;
    cityList = new ArrayList<City>();
    break; case XmlPullParser.START_TAG:
    if (XmlConstants.RESULT.equals(parser.getName())) {
    // 状态
    status = Integer.valueOf(parser.getAttributeValue(null, XmlConstants.STATUS));
    }
    if (status == 1) {
    if (parser.getName().contains(AreaGetter.NATION)) {
    mCity = new City();
    mCity.setCode(parser.getAttributeValue(null, AreaGetter.CODE));
    mCity.setName(parser.getAttributeValue(null, AreaGetter.NAME));
    mCity.setParentId(parentId);
    cityList.add(mCity);
    parentId = parser.getAttributeValue(null, AreaGetter.CODE);
    level = parentId;
    }
    if (parser.getName().contains(AreaGetter.PROVINCE)) {
    mCity = new City();
    mCity.setCode(parser.getAttributeValue(null, AreaGetter.CODE));
    mCity.setName(parser.getAttributeValue(null, AreaGetter.NAME));
    mCity.setParentId(parentId);
    cityList.add(mCity);
    parentId = parser.getAttributeValue(null, AreaGetter.CODE);
    }
    if (parser.getName().contains(AreaGetter.CITY)) {
    mCity = new City();
    mCity.setCode(parser.getAttributeValue(null, AreaGetter.CODE));
    mCity.setName(parser.getAttributeValue(null, AreaGetter.NAME));
    mCity.setParentId(parentId);
    cityList.add(mCity);
    }
    }
    break; case XmlPullParser.END_TAG:
    if(parser.getName().contains(AreaGetter.PROVINCE)){
    parentId = level;
    }
    if (parser.getName().contains(AreaGetter.NATION)) {
    parentId = "0";
    }
    break;
    }
    type = parser.next();
    }
    is.close();
    return cityList;
    }
      

  2.   

    使用 xmlpull解析不分是父节点和子节点,它只认识是不是节点,是不是属性
      

  3.   

    再补充一下,在android中解析XML有三种方式:sax,xmlpull,dom,常用的方法有前两种,因为它们节省内存空间。前面两种大致解析方法是通过事件方式解析,也就是逐个数据进行解析,它无法获取父节点或者说是前一节点的内容是什么,因为它的解析方式是逐个往前读,读完就不知道了。最后一种DOM解析是对象模型解析,也就是将XML的所有 数据存在内存中,所有 的数据在内存中有一个树型结构,有了树型结构就可以获取父节点和子节了。希望我的回答对你有帮助,谢谢!