这里只是把解析的数据当日志打出来了   非常简单的xml解析方式
package com.example.demo.service; import java.io.IOException;
import java.io.InputStream; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory; import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.xmlpull.v1.XmlPullParser; import android.renderscript.Element;
import android.util.Log;
import android.util.Xml;

public class PullXMLService {
/**
*
* pull解析
* @param is xml输入
* @return
* @throws Exception
*/
public String pullParser(InputStream is) throws Exception { XmlPullParser parser = Xml.newPullParser();
//设置编码,编码不对解析不出来
parser.setInput(is, "GBK");
//接收事件类型
int type =parser.getEventType();
//事件类型不为END_DOCUMENT 继续循环
while (type!=XmlPullParser.END_DOCUMENT) {
switch (type) {//判断事件类型是否开始元素
case XmlPullParser.START_TAG:
//是开始元素开始有条件的解析
if("hunan".equals(parser.getName())){
Log.e("ss", parser.getAttributeValue(0));
}else if("city".equals(parser.getName())){
//取属性,可以下标取,也可以属性名称取
Log.e("ss", "城市:"+parser.getAttributeValue(2)+"天气:"+parser.getAttributeValue(8)+"温度:"+parser.getAttributeValue(10)+"-"+parser.getAttributeValue(9)+"实时温度"+parser.getAttributeValue(11)+"风力:"+parser.getAttributeValue(12)+"湿度:"+parser.getAttributeValue(14)+"时间:"+parser.getAttributeValue(15)+"");
//取文本
String text=parser.nextText();
}else{
}
break;
}
//循环一次更改事件状态
type = parser.next();
}
return null; }
/**
* SAX方式解析Xml
* @param is xml输入
* @throws ParserConfigurationException
* @throws SAXException
* @throws IOException
*/
public void saxParsar(InputStream is) throws ParserConfigurationException, SAXException, IOException {
//创建sax工厂
SAXParserFactory sf = SAXParserFactory.newInstance();
//实例化sax
SAXParser sp =sf.newSAXParser();
//解析调用 ,具体解析方法在 DHDefaultHandler类 在下面
sp.parse(is, new DHDefaultHandler()); } } /**
* SAX解析通过继承DefaultHandler 重写父类方法实现,具体重写什么方法看具体情况
* @author huqiang
*
*/
class DHDefaultHandler extends DefaultHandler { /**
* 开始标签处,可解析处标签属性,具体要解析什么数据自己判断执行,运行顺序
* startDocument() → startElement() → characters() → endElement() → endDocument()
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
Log.e("afa", "元素解析开始");
int attrlegth = attributes.getLength();
Log.e("afa"+attrlegth, localName);
if("city".equals(qName)){
//如果没有值最好处理下,或者空格
Log.e("afa", "城市:"+attributes.getValue(2)+"天气:"+attributes.getValue(8)+"温度:"+attributes.getValue(10)+"-"+attributes.getValue(9)+"实时温度"+attributes.getValue(11)+"风力:"+attributes.getValue(12)+"湿度:"+attributes.getValue(15)+"时间:"+attributes.getValue(16)+"");
/*for (int i = 0; i < attrlegth; i++) {
String attrVal = attributes.getValue(i);
Log.e("afa"+i, attrVal+"===localName="+localName+",qName="+qName);
}*/
}
}
/**
* 解析标签包含的文本,具体需要解析什么标签具体判断
*/
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
String str = new String(ch,start,length);
Log.e("afa", "解析标签文本");
Log.e("afa", ""+str);
super.characters(ch, start, length);
} @Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub Log.e("afa", "开始解析");
super.startDocument();
} @Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
Log.e("afa", "解析结束");
super.endDocument();
} @Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
Log.e("afa", "元素解析结束");
super.endElement(uri, localName, qName);
}
}
测试类  xml文件放在src目录下面  
package com.example.demo.test; import java.io.InputStream; import com.example.demo.service.PullXMLService; import android.test.AndroidTestCase; public class Test extends AndroidTestCase {
public void testPullParser() throws Exception { PullXMLService pull = new PullXMLService();
//pull.pullParser(Test.class.getClassLoader().getResourceAsStream("weather.xml"));
pull.saxParsar(Test.class.getClassLoader().getResourceAsStream("weather.xml")); } }

非常简单的XML解析(SAX解析、pull解析)的更多相关文章

  1. Android系列--DOM、SAX、Pull解析XML

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  2. Android初级教程:Android中解析方式之pull解析

    在安卓中有很多种解析方式.按照大方向有xml解析和json解析.而,细致的分,xml和json解析各有自己的很多解析方式.今天这一篇主要介绍xml解析中的pull解析.对于xml的解析方式,我之前在j ...

  3. Android(java)学习笔记187:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...

  4. Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...

  5. Android笔记(四十六) Android中的数据存储——XML(二)PULL解析

    PULL 的工作原理: XML pull提供了开始元素和结束元素.当某个元素开始时,可以调用parser.nextText()从XML文档中提取所有字符数据.当解析到一个文档结束时,自动生成EndDo ...

  6. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  7. java拾遗3----XML解析(三) StAX PULL解析

    使用PULL方式解析XML: Pull是STAX的一个实现 StAX是The Streaming API for XML的缩写,一种利用拉模式解析(pull-parsing)XML文档的API StA ...

  8. SAX与DOM解析XML的区别

    解析xml有四种方法:DOM,SAX,DOM4j,JDOM.     我们主要学了两种:DOM和SAX.     DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件.各有各的好. DO ...

  9. Java sax、dom、pull解析xml

    -------------------------------------SAX解析xml---------------------------------- >Sax定义 SAX是一个解析速度 ...

随机推荐

  1. JS倒计时——天时分秒

      HTML代码: <div id="times_wrap" class="time_num">    距离结束时间:     <div cl ...

  2. 商人过河问题(DFS)

    问题描述:3个商人带着3个仆人过河,过河的工具只有一艘小船,只能同时载两个人过河,包括划船的人.在河的任何一边,只要仆人的数量超过商人的数量,仆人就会联合起来将商人杀死并抢夺其财物,问商人应如何设计过 ...

  3. paper 109 :图像处理中的拉普拉斯算子

    1.基本理论 拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性.一个二维图像函数 的拉普拉斯变换是各向同性的二阶导数,定义为:   为了更适合于数字图像处理,将该方程表示为离散形式:    另外 ...

  4. UVM中的class--2

    1)uvm_component从uvm_report_object继承而来,提供的功能包括: 1)Hierarchy,-----searching and traversing component h ...

  5. css3创建一个上下线性渐变色背景的div

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  6. UICollectionView介绍

    文章原出处未知,如有朋友知道,请告诉我,我会补上. 1.1. Collection View 全家福: UICollectionView, UITableView, NSCollectionView ...

  7. eclipse启动时虚拟机初始内存配置

    eclipse启动时虚拟机初始内存配置: -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m

  8. html里的添加视频特效(美化,丰富内容)

    现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.Chrome),支持H.264的(Safari.IE ...

  9. php实战正则表达式:验证手机号

    摘自http://www.tuicool.com/articles/MFNZRzu 本文通过逐步完善一个验证手机号的正则表达式来介绍了正则表达式中的 字符组 .量词 . 字符串起始/结束位置 . 分组 ...

  10. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解  3.1 解析新增页面目录  3.2 解析新增测试用例目录  3. ...