zoukankan      html  css  js  c++  java
  • Android中解析XML的方法

    假设我要解析如下的XML文件:

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <books>
    3     <book price="99.0" 出版日期="2008年">疯狂java讲义</book>
    4     <book price="199.0" 出版日期="2009年">疯狂android讲义</book>
    5     <book price="79.0" 出版日期="2010年">疯狂讲义</book>
    6 </books>

    首先将该文件放到res/xml文件夹下,如果没有可以手动建立,然后解析代码如下:

     1 public void xmlparser(View v) {
     2 
     3         XmlResourceParser xmlResourceParser = getResources().getXml(R.xml.books);// 获取xml文件的解析器
     4         try {
     5             StringBuilder sb = new StringBuilder();
     6             while (xmlResourceParser.getEventType() != XmlResourceParser.END_DOCUMENT) {// 如果没有到文档的结尾处
     7                 if (xmlResourceParser.getEventType() == XmlResourceParser.START_TAG) {// 如果遇到标签的开始标记,就开始读取类容
     8                     // 获取标签的签名
     9                     String tagName = xmlResourceParser.getName();
    10                     if (tagName.equals("book")) {
    11 
    12                         String bookPrice = xmlResourceParser.getAttributeValue(0);// 获取标签中的第一个属性的值,这里是“price”的值
    13                         String bookdata = xmlResourceParser.getAttributeValue(1);// 获取标签中的第二个属性的值,这里是“出版日期”的值
    14                         String bookName = xmlResourceParser.nextText();// 获取文本节点的值,这里是书的名字
    15 
    16                         sb.append("价格:");
    17                         sb.append(bookPrice);
    18                         sb.append("出版日期:");
    19                         sb.append(bookdata);
    20                         sb.append("书名:");
    21                         sb.append(bookName);
    22                         sb.append("
    ");
    23                     }
    24 
    25                 }
    26                 xmlResourceParser.next();// 获取解析器的下一个事件
    27 
    28             }
    29 
    30             textView.setText(sb.toString());
    31 
    32         } catch (XmlPullParserException e) {
    33             e.printStackTrace();
    34 
    35         } catch (IOException e) {
    36             e.printStackTrace();
    37         }
    38 
    39     }

    解析后的结果如下:

  • 相关阅读:
    SPSS时间序列:频谱分析
    PureBasic—数控编辑框与调节块和进度条
    DELPHI2007 安装ACTIVEX插件的方法
    C++ builder的文件操作
    C++动态数组
    excel快速复制大量公式的方法
    Delphi XE5 如何与其他版本共存
    PureBasic 集成Form设计器的使用
    VS C++ 从一个窗口创建另一个窗口
    ENVI 5.0 Beta 体验——影像数据的显示
  • 原文地址:https://www.cnblogs.com/csxcode/p/4169768.html
Copyright © 2011-2022 走看看