`
一口三个汉堡
  • 浏览: 112856 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

android-xml文件解析教程

阅读更多
  在讨论群里里面有人在问xml的解析方法,我就弄了个简单的demon来介绍我自己的方法下面的xml文件和读取的效果图

 

<?xml version="1.0" encoding="utf-8"?>
<tests>
	<test name="test_1">测试1</test>
	<test name="test_2">测试2</test>
	<test name="test_3">测试3</test>
	<test name="test_4">测试4</test>
	<test name="test_5">测试5</test>
	<test name="test_6">测试6</test>
	<test name="test_7">测试7</test>
	<test name="test_8">测试8</test>
	<test name="test_9">测试9</test>
</tests>


 效果图:

<br><br><img src="http://dl.iteye.com/upload/attachment/557578/f233c0b6-fd25-36a8-8570-9f82b04f2000.png" alt=""><br> 主要代码




package com.wjh.xmldemon;

import java.util.ArrayList;

import org.xmlpull.v1.XmlPullParser;

import android.app.Activity;
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.widget.TextView;

public class XmlDemonActivity extends Activity {
    /** Called when the activity is first created. */
	TextView tv = null;
	ArrayList<Test> list = null;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv =(TextView)findViewById(R.id.tv);
        list = getXmlData(this, R.xml.test);
        initData();
    }
    //初始化数据
    private void initData()
    {
    	StringBuffer sb = new StringBuffer();
    	int size = list.size();
    	for(int i = 0;i<size;i++)
    	{
    		Test test = list.get(i);
    		sb.append("name="+test.getName());
    		sb.append("|");
    		sb.append("text="+test.getText());
    		sb.append("\n");
    	}
    	tv.setText(sb.toString());
    }
    //获得xml文件数据,并放回一个list
    public  ArrayList<Test> getXmlData(Context context,int id)
    {
    	ArrayList<Test> list = new ArrayList<Test>();
		  try {
			  //打开文档
				XmlResourceParser xml = context.getResources().getXml(id);
				int eventType = xml.next();
				try {
			        // 切换到下一个状态,并获得当前状态的类型
					Test test = null;
			        while ( true ) 
			        {
			        	
			        	if(test == null)
			        	{
			        		test = new Test();
			        	}
			           // 文档开始状态
			           if (eventType == XmlPullParser. START_DOCUMENT ) 
			           {
			           }
			           // 标签开始状态
			           else if (eventType == XmlPullParser. START_TAG ) 
			           {
			              // 将标签名称和当前标签的深度(根节点的 depth 是 1 ,第 2 层节点的 depth 是 2 ,类推)
			              switch (xml.getDepth())
			              {
			              case 1:
			                 break ;
			              case 2:
			            	  //获得属性name的值
			            	  /*
			            	   * <tests>
									<test name="test_1">测试1</test>
								 </tests>
			            	   */
			            	  //从上面可以看出test在tests下面,也是深度为2
			            	 test.setName(xml.getAttributeValue(null,"name"));
			            	  break;
			              }
			           }
			           // 读取标签内容状态
			           else if (eventType == XmlPullParser. TEXT ) 
			           {
			        	   //<test name="test_1">测试1</test>获得标签中的数据
			        	   String str = xml.getText();
			        	   if(str!=null&amp;&amp;!str.equals(""))
			        	   {
			        		   test.setText(str);
			        		   list.add(test);
			        		   test = null;
			        	   }
			           }
			           else if (eventType == XmlPullParser. END_TAG ) 
			           {
			        	   //结束标签
			           }
			           // 文档结束状态
			           else if (eventType == XmlPullParser. END_DOCUMENT ) 
			           {
			              // 文档分析结束后,退出 while 循环
			              break ;
			           }
			           // 切换到下一个状态,并获得当前状态的类型
			           eventType = xml.next();
			 
			        }
			     } catch (Exception e) {
			        e.printStackTrace();
			     }
	        } catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		  return list;
    }
    //Test类
    class Test
    {
    	private String name;//name属性
    	private String text;//内容
    	public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getText() {
			return text;
		}
		public void setText(String text) {
			this.text = text;
		}
		
    }
}

 代码包:<br> xmlDemon.rar
  • 大小: 6.4 KB
1
4
分享到:
评论

相关推荐

    android下解析xml文件的demo

    本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和...

    android----xml Sax解析示例

    SAX(Simple API for XML)是XML的一种解析器,它采用事件驱动的方式处理XML文档,非常适合处理大型或内存有限的设备上的XML文件,如Android手机。 SAX解析的基本原理是,当解析器读取XML文档时,遇到每个元素、...

    Android---解析XML数据

    本教程将深入探讨如何在Android应用中解析XML数据,主要聚焦于使用`Xml.newPullParser()`方法。这个方法是Android提供的一个高效的XML解析器,它支持事件驱动的解析模式,适用于处理大型XML文档。 首先,我们来理解...

    老罗Android视频开发教程 android解析xml文件代码

    老罗的Android视频教程深入浅出地讲解了如何在Android平台上解析XML文件,这对于开发者来说是非常重要的技能。以下是对这个主题的详细解释。 1. **XML基本概念** XML是一种自描述的语言,其结构清晰,易于机器和...

    Android-XML解析技术(共23张PPT).ppt

    4. 解析XML:调用解析器对XML文件进行解析,处理事件或遍历树形结构。 5. 处理解析结果:根据解析到的数据,更新UI或其他业务逻辑。 在实际项目实训中,可以创建一个名为`xmlparserdemo`的Android工程,包含XML文件...

    android Pull XML文件解析 存取 代码程序

    本篇文章将深入探讨如何在Android中使用Pull解析器进行XML文件的解析和存取。 一、XML解析器简介 在Android中,有两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是事件驱动...

    Android 解析xml文件

    本篇将深入探讨Android中解析XML文件的方法,以及如何通过示例代码`ReadXmlConfigFile`来实现这一过程。 ### XML解析器类型 Android提供了多种解析XML的方式,主要包括以下几种: 1. **DOM解析器**:Document ...

    老罗android视频开发源码和ppt--android解析xml文件.rar

    本资料集合是"老罗"(罗升阳)关于Android视频开发的一系列教学资源,包括源码和PPT,专注于讲解如何在Android环境中解析XML文件。 首先,我们要理解XML解析的基本概念。在Android中,XML解析有两种主要方式:DOM...

    android 解析XML文件 生成XML文件

    支持SAX解析XML文件,DOM解析XML文件,Pull解析器解析XML文件,Pull生成XML文件,JAVA和Kotlin两种语言编写

    Android解析xml(3)---Pull解析

    本篇文章将重点讨论如何在Android中使用Pull解析器(PullParser)来解析XML文件。Pull解析器是一种事件驱动的解析方式,它允许应用程序在解析过程中按需获取XML数据,而不是一次性加载整个文档到内存,这使得处理...

    Android解析XML文件

    本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...

    android中xml文件的解析.doc

    理解如何解析XML文件是至关重要的,本节将深入探讨Android中的三种XML解析方法:SAX、DOM和Pull解析。 **SAX解析** SAX(Simple API for XML)是一种基于事件驱动的解析方式,它不加载整个XML文档到内存,而是逐行...

    android XML文件解析

    下面我们将详细介绍如何在Android中利用SAX框架模型实现XML文件解析。 一、SAX解析器工作原理 SAX解析器在读取XML文件时,遇到元素开始、结束、属性等事件时会触发回调函数,开发者可以在这些回调函数中处理相应的...

    android xml pull解析示例

    Android系统中的许多配置文件(如AndroidManifest.xml)、布局文件(如activity_main.xml)都是XML格式,XML Pull解析常用于读取这些文件中的数据。 通过以上内容,我们可以了解XML Pull解析的基本概念、工作原理...

    android-关于xml的解析

    SAX解析则是一种事件驱动的解析方式,它逐行读取XML文件,只处理遇到的元素,内存占用较低,适合处理大型XML文件。 本文将重点介绍SAX解析。SAX解析器遵循“读取-事件-响应”模式,当遇到XML文档的某个部分时,会...

    android的xml文件的解析

    在Android开发中,XML文件广泛用于布局设计、配置设置、数据存储等方面,因此理解XML文件的解析至关重要。本文将深入探讨两种主要的XML解析方法:DOM解析和SAX解析。 一、XML概述 XML(eXtensible Markup Language...

    在-Android-上使用-XML.docx

    XML 在 Android 开发中是一个非常重要的技术,.Android 平台支持多种 XML 解析方法,开发者可以根据需要选择合适的解析方法。在本文中,我们介绍了 XML 在 Android 中的应用、XML 解析方法和使用 XML 的优点。

    Android XML 文件解析

    在Android开发中,XML文件广泛用于存储数据、配置文件以及布局设计。理解并掌握XML的解析方式对于开发者来说至关重要。本资源重点介绍了Android中的三种XML解析技术:SAX(Simple API for XML)、DOM(Document ...

    SAX--XML文件读写

    在Android开发中,由于内存限制和性能优化的需求,通常会选择SAX(Simple API for XML)解析器来读取XML文件,而非DOM(Document Object Model)解析器,因为SAX是基于事件驱动的,它按需逐个处理XML元素,占用内存...

Global site tag (gtag.js) - Google Analytics