Android中pull解析XML文件

 


/**
  * 解析XML文件
  * @param is XML文件输入流
  * @return 诗词的集合
  * @throws XmlPullParserException
  * @throws IOException
  */
 public static List<Poem> readXML(InputStream is) throws XmlPullParserException, IOException{
  List<Poem> poems = null;
  Poem poem = null;
  // 构造一个pull解析器
  
XmlPullParser parser = Xml.newPullParser();
  // 设置解析的资源以及格式
  
parser.setInput(is,"utf-8");
  int type = parser.getEventType();
  while(type != XmlPullParser.END_DOCUMENT){
   switch (type) {
   case XmlPullParser.START_TAG:
    // 当标签名为root时
    if ("root".equals(parser.getName())) {
     poems = new ArrayList<Poem>();
    }else if ("node".equals(parser.getName())) {
     poem = new Poem();
    }else if ("title".equals(parser.getName())) {
     poem.setTitle(parser.nextText());
    }else if ("auth".equals(parser.getName())) {
     poem.setAuth(parser.nextText());
    }else if ("type".equals(parser.getName())) {
     poem.setType(parser.nextText());
    }else if ("content".equals(parser.getName())) {
     poem.setContent(parser.nextText());
    }else if ("desc".equals(parser.getName())) {
     poem.setDesc(parser.nextText());
    }
    break;

   case XmlPullParser.END_TAG:
    if ("node".equals(parser.getName())) {
     poems.add(poem);
     poem = null;
    }
    break;
   }
   // 解析下一个
   type = parser.next();
  }
  System.out.println("poems.size() = " + poems.size());
  return poems;
 }

 

// xml文件如下:

解析XML时,首先构造一个pull解析器,然后设置解析器的资源以及格式。

用一个循环来读取xml文件的每一个节点,用parser.getName()方法获取节点的名称,当节点名为root时,创建一个Poem的集合

   当节点名为node时实例化一个Poem对象,然后跳到下一个节点

   当节点名为title时,用parser.nextText())读取后面的文本,也就是aaaa,后面如下。。。。。。

 

如果<node>节点中有一个属性id,<node id="1">,可以通过parser.getAttributeValue(0)来获取id的值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值