对xml进行解析

1、要解析的xml文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <infos>
 3     <city id="1">
 4         <temp>20C/30C</temp>
 5         <weather>多云转晴</weather>
 6         <wind>7-8级</wind>
 7         <name>广州</name>
 8         <pm>200</pm>
 9     </city>
10     <city id="2">
11         <temp>25C/30C</temp>
12         <weather>多云转晴</weather>
13         <wind>2-3级</wind>
14         <name>钦州</name>
15         <pm>100</pm>
16     </city>
17     <city id="3">
18         <temp>20C/30C</temp>
19         <weather>多云转晴</weather>
20         <wind>7-9级</wind>
21         <name>北海</name>
22         <pm>250</pm>
23     </city>
24 </infos>

2、activity代码

 1 package com.example.myweather;
 2
 3 import java.util.List;
 4
 5 import com.example.myweather.service.WeatherService;
 6 import com.example.myweather.domain.WeatherInfo;
 7 import android.os.Bundle;
 8 import android.app.Activity;
 9 import android.view.Menu;
10 import android.widget.TextView;
11 import android.widget.Toast;
12
13 public class MainActivity extends Activity {
14
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19
20         TextView tv = (TextView)findViewById(R.id.tv);
21         try{
22             List<WeatherInfo> Infos = WeatherService.getWeatherInfos(MainActivity.class.getClassLoader().getResourceAsStream("weather.xml"));
23             StringBuffer sb = new StringBuffer();
24             for(WeatherInfo info : Infos){
25                 String str = info.toString();
26                 sb.append(str);
27                 sb.append("\n");
28             }
29
30             tv.setText(sb.toString());
31         }catch(Exception e){
32             e.printStackTrace();
33             Toast.makeText(this, "解析失败!", 0).show();
34         }
35
36     }
37
38 }

3、解析xml

 1 package com.example.myweather.service;
 2
 3 import java.io.InputStream;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6
 7 import org.xmlpull.v1.XmlPullParser;
 8 import org.xmlpull.v1.XmlPullParserException;
 9
10 import android.util.Xml;
11
12 import com.example.myweather.domain.WeatherInfo;
13
14 public class WeatherService {
15
16     public static List<WeatherInfo> getWeatherInfos(InputStream is) throws Exception{
17         XmlPullParser parser = Xml.newPullParser();
18         parser.setInput(is,"utf-8");
19         List<WeatherInfo> weatherInfos = null;
20         WeatherInfo weatherInfo = null;
21         int type = parser.getEventType();
22         while(type != XmlPullParser.END_DOCUMENT){
23
24             switch(type){
25             case XmlPullParser.START_TAG:
26                 if("infos".equals(parser.getName())){
27                     weatherInfos = new ArrayList<WeatherInfo>();
28                 }else if("city".equals(parser.getName())){
29                     weatherInfo = new WeatherInfo();
30                     String idStr = parser.getAttributeValue(0);
31                     weatherInfo.setId(Integer.parseInt(idStr));
32                 }else if("temp".equals(parser.getName())){
33                     String temp = parser.nextText();
34                     weatherInfo.setTemp(temp);
35                 }else if("weather".equals(parser.getName())){
36                     String weather = parser.nextText();
37                     weatherInfo.setWeather(weather);
38                 }else if("wind".equals(parser.getName())){
39                     String wind = parser.nextText();
40                     weatherInfo.setWind(wind);
41                 }else if("name".equals(parser.getName())){
42                     String name = parser.nextText();
43                     weatherInfo.setName(name);
44                 }else if("pm".equals(parser.getName())){
45                     String pm = parser.nextText();
46                     weatherInfo.setPm(pm);
47                 }
48                 break;
49             case XmlPullParser.END_TAG:
50                 if("city".equals(parser.getName())){
51                     weatherInfos.add(weatherInfo);
52                     weatherInfo = null;
53                 }
54             default:
55                 break;
56             }
57
58
59             type = parser.next();
60         }
61         return weatherInfos;
62     }
63 }

4、weatherInfo类

 1 package com.example.myweather.domain;
 2
 3 public class WeatherInfo {
 4
 5     private int id;
 6     private String temp;
 7     private String weather;
 8     private String wind;
 9     private String name;
10     private String pm;
11
12
13     @Override
14     public String toString() {
15         return "WeatherInfo [id=" + id + ", temp=" + temp + ", weather="
16                 + weather + ", wind=" + wind + ", name=" + name + ", pm=" + pm
17                 + "]";
18     }
19     public int getId() {
20         return id;
21     }
22     public void setId(int id) {
23         this.id = id;
24     }
25     public String getTemp() {
26         return temp;
27     }
28     public void setTemp(String temp) {
29         this.temp = temp;
30     }
31     public String getWeather() {
32         return weather;
33     }
34     public void setWeather(String weather) {
35         this.weather = weather;
36     }
37     public String getWind() {
38         return wind;
39     }
40     public void setWind(String wind) {
41         this.wind = wind;
42     }
43     public String getName() {
44         return name;
45     }
46     public void setName(String name) {
47         this.name = name;
48     }
49     public String getPm() {
50         return pm;
51     }
52     public void setPm(String pm) {
53         this.pm = pm;
54     }
55 }
时间: 2024-08-30 16:44:57

对xml进行解析的相关文章

AFNetWorking 简单介(XML,JSON解析和判断网络状态

//AFNetWorking 当下最流行的数据请求方法 里面不仅包含数据请求还包含数据解析 //包含的数据请求就是对系统类NSURLConnection的封装 //数据解析(NSJSONSerialization.XMLParser) //AFNetworking 下至兼容ios6.0 以及block语法 arc //通过AFNetWorking请求json数据 并解析 //<1>创建http请求操作管理者对象 AFHTTPRequestOperationManager * manager =

PHP XML Expat 解析器

PHP XML Expat 解析器 内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能. XML 是什么? XML 用于描述数据,其焦点是数据是什么.XML 文件描述了数据的结构. 在 XML 中,没有预定义的标签.您必须定义自己的标签. 如需学习更多关于 XML 的知识,请访问我们的 XML 教程. Expat 是什么? 如需读取和更新 - 创建和处理 - 一个 XML 文档,您需要 XML 解析器. 有两种基本的 XML 解析器类型: 基于树的解析器:这种解析器把 XML

XML消息解析_php

初识php——微信消息处理 1 <?php 2 3 $test = new weixin(); 4 $test->Message(); 5 6 class weixin{ 7 public function Message(){ 8 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 9 if (!empty($postStr)){ 10 $postObj = simplexml_load_string($postStr, 'SimpleX

(Android review)XML的解析与序列化

这篇博客主要用来介绍对XML文件的操作:解析与生成. Android手机内部的解析就是pull解析官网:http://xmlpull.org/所谓的解析,我们可以理解为:利用XML文件的内容来生成一个对象导出生成的xml文件后不要对其格式化,否则会出异常 1.MainActivity package com.example.xmlparsertest1; import android.os.Bundle; import android.app.Activity; import android.v

Android中XML数据解析

转载请注明出处:http://blog.csdn.net/yegongheng/article/details/38296207 XML初步 今天我们来学习另一种非常重要的数据交换格式-XML.XML(Extensible Markup Language的缩写,意为可扩展的标记语言),它是一种元标记语言,即定义了用于定义其他特定领域有关语义的.结构化的标记语言,这些标记语言将文档分成许多部件并对这些部件加以标识.XML 文档定义方式有:文档类型定义(DTD)和XML Schema.DTD定义了文

xml数据解析和生成

java中xml的解析方式有许多,有java自带的DOM.SAX,android中的PULL,其它的还有DOM4J.JDOM等. 本文简要讲述DOM.SAX.PULL三种方式. 1.DOM方法 缺点:此方法会将所有数据都读取到内存中,内存消耗大,数据量太大容易造成OOM,而且此方法的效率较低,所以不建议在移动开发中使用. 优点:以树形的结构访问,容易理解,编码简单,可随机访问所需要的内容. 2.SAX方法: 从开头顺序读取直至结尾,读取和处理同步. 缺点:编码难度较大 优点:解析快,占用内存小,

XML数据解析 Dom方式解析

这是一份XML数据,与上一篇文章的JSON数据内容是相同的,上一篇是JSON格式,这篇文章使用的是XML格式的数据 本文以上篇文章的代码为基础修改: 1>数据形式变为XML数据,所以要修改文件的路径 2>因为数据格式不同,所以解析方式不同先采用GData方式解析XML文档 需求:将此XML文档中的数据解析出来,通过tableView展示出来,上一篇文章的需求相同,只是数据与解析方法不同 此处只给出解析本分代码,即JSON解析2文章中代码部分,61--89行部分,开始部分修改文件路径. 使用GD

iOS网络编程解析协议二:XML数据传输解析

XML两种解析方式,一种是SAX,NSXMLParser是SAX方法解析,另一种是DOM(Document Object Model); 区别: SAX: 只能读,不能修改,只能顺序访问,适合解析大型XML,解析速度快 常应用于处理大量数据的XML,实现异构系统的数据访问,实现跨平台 从文档的开始通过每一节点移动,定位一个特定的节点 DOM: 不仅能读,还能修改,而且能够实现随机访问,缺点是解析速度慢,适合解析小型文档 一般应用与小型的配置XML,方便操作 为载入到内存的文档节点建立类型描述,呈

iOS开发——网络Swift篇&amp;JSON与XML数据解析

JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SDK自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也比其他第三方开源项目高. NSJSONSerialization能将JSON转换成Foundation对象,也能将Foundation对象转换成JSON,但转换成JSON的对象必须具有如下属性

android基础知识13:AndroidManifest.xml文件解析

1.重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根目录下,描述了package中的全局数据,包括package中暴露的组件 (activities, services, 等等),以及他们各自的实现类,各种能被处理的数据和启动位置等重要信息. 因此,该文件提供了Android系统所需要的关于该应用程序的必要信息,即在该应用程序的任何代码运行之前系统所