`
zhengaihua
  • 浏览: 21858 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

xml_pull

 
阅读更多
package com.example.day14_xmlpull;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.os.Bundle;
import android.app.Activity;
import android.util.Xml;
import android.view.Menu;
import android.view.View;

/**
 * 解析Xml
 * 
 * @author gaoyn
 * 
 */
public class MainActivity extends Activity {

	List<Person> persons = new ArrayList<Person>();
	private String tagname;
	Person p;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	// 解析xml文件的方法
	public void pullxml(View v) {
		// 1 得到pull解析器
		XmlPullParser xmlParser = Xml.newPullParser();
		try {
			// 2 加载需要解析的文件
			xmlParser.setInput(getAssets().open("data.xml"), "utf-8");
			// 3 开始读取文档
			int type = xmlParser.getEventType();
			// 如果文档没有读到结束标签,循环进行读取文档内容
			while (type != XmlPullParser.END_DOCUMENT) {
				// 读取tag标签
				switch (type) {
				case XmlPullParser.START_DOCUMENT:
					System.out.println("开始读取文档+++++++++++++++++");
					break;
				case XmlPullParser.START_TAG:
					// 如果读取到开始标签,把标签名进行读取<person>
					tagname = xmlParser.getName();
					System.out.println(tagname+"++++++++++++++++标签名");
					if (tagname.equals("person")) {
						p = new Person();
						// 得到标签person中的属性值
						String sid = xmlParser.getAttributeValue(0).trim();
						p.setId(Integer.parseInt(sid));
					}
					break;
				case XmlPullParser.TEXT:
					if (tagname.equals("name")) {
						p.setName(xmlParser.getText());
					} else if (tagname.equals("age")) {
//						System.out.println(xmlParser.getText());
						String sage = xmlParser.getText().trim();
						p.setAge(Integer.parseInt(sage));
					}
					break;
				case XmlPullParser.END_TAG:
					//结束时,对标签名赋值
					tagname=xmlParser.getName();
					//如果结束标签为</person>
					if (tagname.equals("person")) {
						persons.add(p);
					}
					tagname="";
					break;
				default:
					break;
				}
				/**
				 * 业务逻辑处理
				 */
				type = xmlParser.next();
			}

			System.out.println("文档读取完毕++++++++++++++++++" + persons);
		} catch (XmlPullParserException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

分享到:
评论

相关推荐

    XML_PullParser for PHP-开源

    与传统的DOM解析器或SAX解析器不同,XML_PullParser采用基于令牌的解析模型,这种模型对于处理大型XML文档尤其有益,因为它降低了内存消耗并提高了性能。 在基于事件的解析模型中,如SAX解析,解析器在遇到XML文档...

    Xml.zip_pull_xml pull

    而“Xml.zip_pull_xml pull”这个主题则涉及到了一种更高效的解析方法——Pull解析。 Pull解析器(XML Pull parsing)是一种事件驱动的解析方式,它不需要一次性加载整个XML文档,而是按需读取,逐个处理XML元素。...

    PullParser2_1_7.tgz_PullParser2_1_7_xml parser_xml x_xml解析器

    此项目与XML解析有关,它采用的是Pull Parser模式,这是一种轻量级、低级别的XML解析技术。Pull Parser允许应用程序在解析过程中主动“拉取”XML数据,而不是等待解析器推送事件,这使得它在处理大型XML文档时非常...

    pull_xml_demo

    本示例"pull_xml_demo"是关于如何使用Android的PullParser解析XML的演示。Pull解析器是一种轻量级、低内存占用的解析方式,特别适合处理大文件或者网络流中的XML数据。 PullParser提供了事件驱动的解析模型,它会...

    VB XML文件读取操作类.rar_vb xml_vb xml操作类_vb 安卓xml_xml_xml文件读取类

    对于Android,通常使用Java的DOM、SAX或Pull解析器来处理XML。 6. **实例代码**: 压缩包可能包含了演示如何在VB中使用XMLDocument类读取和操作XML文件的代码片段。这些示例代码可以帮助初学者理解XML操作的基本...

    android xml pull解析示例

    在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...

    xml.rar_android_android sax_android sax xml_java xml_sax

    本资料包“xml.rar”主要关注Android环境下的XML解析,特别是SAX解析器,同时也涵盖了DOM和Pull解析方式。 1. XML基本概念: XML是一种自描述性的标记语言,它通过标签来定义数据结构。每个XML文档都包含元素、...

    android 4种方法完美读取rss xml程序源代码

    XML_PULL是基于事件的解析方式,与SAX类似,但不依赖于Java平台。在Android中,可以使用`XmlPullParser`接口来实现。读取RSS的步骤: 1. 获取`XmlPullParser`实例,可以使用`XmlPullParserFactory`创建。 2. 设置...

    xml.rar_Android XML_android_java xml parser

    本教程将详细介绍如何在Android中使用Java XML解析器,特别是Pull解析器来处理XML内容。 一、XML基本概念 XML是一种自描述性的文本格式,通过标签来定义数据结构和内容。它与HTML类似,但更注重数据的结构,而不是...

    Pull解析xml

    通常我们调用`newInstance()`方法,并设置解析模式为`XML_PULL_PARSER`。 ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser parser =...

    WS_XML_HTTP

    在Android中,我们可以使用DOM(Document Object Model)、SAX(Simple API for XML)或Pull Parser来解析XML数据。DOM解析器会将整个XML文档加载到内存中,适合小型XML文件;SAX解析器则是一种事件驱动的方式,逐行...

    Android中,使用SAX和PULL解析天气预报XML

    本文将深入探讨如何在Android中使用两种常见的XML解析技术——SAX(Simple API for XML)和PULL(Pull Parser)来解析天气预报的XML数据。这两种方法各有优缺点,适用于不同的场景。 首先,我们来看SAX解析器。SAX...

    xml.zip_Android XML_android

    XML(Extensible Markup Language)是一种用于标记...对于初学者,建议从简单的XML文件开始,理解DOM、SAX和Pull解析的工作原理,然后逐渐尝试处理更复杂的数据结构。同时,注意优化解析性能,尤其是在处理大量数据时。

    使用Pull解析器读取XML文件和生成XML文件

    本篇文章将深入探讨如何使用Pull解析器来读取XML文件,以及如何生成XML文件。Pull解析器是一种轻量级的解析方式,它允许程序在解析XML时按需获取数据,而不需要一次性加载整个文档到内存,从而提高了效率和资源利用...

    002_动力节点_XML_介绍解析XML的几种方式.zip_XML DOM4J_视频解析

    3. StAX(Streaming API for XML):介于DOM和SAX之间,它允许程序以拉式(pull-based)方式按需解析XML,降低了内存消耗,同时编程接口比SAX更友好。 在视频中,DOM4J的使用是重点。DOM4J是一个开源的、灵活的Java...

    XML_xiliehua.zip

    - 解析示例可能演示如何读取XML文件,然后使用DOM、SAX或Pull解析器来提取数据。 5. **最佳实践**: - 在序列化和反序列化时,注意处理异常,确保数据的完整性和一致性。 - 对于大型XML文件,优先考虑SAX或Pull...

    XML_OPPO_frame.zip

    在分析和使用“XML_OPPO_frame.zip”中的文件时,开发者需要熟悉Android SDK和XML解析库,例如DOM、SAX或Pull解析器。同时,理解Android的生命周期管理和组件交互也是必要的,以便正确地应用和响应XML定义的行为。...

    服务相关流程初始化脚本_xml_

    这些脚本可能使用XML解析库,如DOM、SAX或Pull解析器来读取和处理XML数据,然后执行相应的操作。 在实际应用中,这样的脚本可能包含以下部分: 1. **XML结构**:定义服务流程的开始、结束节点以及中间的各个步骤,...

    PullXML和Json

    Android_JieXi_Pull_Reader可能是一个示例代码库,展示了如何在Android中使用XMLPullParser进行XML解析。XMLPullParser是Android SDK提供的一种解析XML的API,它可以顺序地读取XML文档,逐个处理开始标签、结束标签...

    google天气预报XML-Pull解析版(完全解析)

    在这个"google天气预报XML-Pull解析版(完全解析)"中,我们将探讨如何利用XML-Pull解析技术来处理从Google天气API获取的数据。 XML-Pull解析是一种轻量级的解析方法,与DOM(Document Object Model)和SAX(Simple...

Global site tag (gtag.js) - Google Analytics