`
小鑫。
  • 浏览: 135090 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android解析XML到对象工具类

 
阅读更多
/**
 * 解析XML工具类
 */
public class XmlUtils {

	/**
	 * 解析XML转换成对象
	 * 
	 * @param is
	 *            输入流
	 * @param clazz
	 *            对象Class
	 * @param fields
	 *            字段集合一一对应节点集合
	 * @param elements
	 *            节点集合一一对应字段集合
	 * @param itemElement
	 *            每一项的节点标签
	 * @return
	 */
	public static List<Object> parse(InputStream is, Class<?> clazz,
			List<String> fields, List<String> elements, String itemElement) {
		Log.v("rss", "开始解析XML.");
		List<Object> list = new ArrayList<Object>();
		try {
			XmlPullParser xmlPullParser = Xml.newPullParser();
			xmlPullParser.setInput(is, "UTF-8");
			int event = xmlPullParser.getEventType();

			Object obj = null;

			while (event != XmlPullParser.END_DOCUMENT) {
				switch (event) {
				case XmlPullParser.START_TAG:
					if (itemElement.equals(xmlPullParser.getName())) {
						obj = clazz.newInstance();
					}
					if (obj != null
							&& elements.contains(xmlPullParser.getName())) {
						setFieldValue(obj, fields.get(elements
								.indexOf(xmlPullParser.getName())),
								xmlPullParser.nextText());
					}
					break;
				case XmlPullParser.END_TAG:
					if (itemElement.equals(xmlPullParser.getName())) {
						list.add(obj);
						obj = null;
					}
					break;
				}
				event = xmlPullParser.next();
			}
		} catch (Exception e) {
			Log.e("rss", "解析XML异常:" + e.getMessage());
			throw new RuntimeException("解析XML异常:" + e.getMessage());
		}
		return list;
	}
	
	/**
	 * 设置字段值
	 * 
	 * @param propertyName
	 *            字段名
	 * @param obj
	 *            实例对象
	 * @param value
	 *            新的字段值
	 * @return
	 */
	public static void setFieldValue(Object obj, String propertyName,
			Object value) {
		try {
			Field field = obj.getClass().getDeclaredField(propertyName);
			field.setAccessible(true);
			field.set(obj, value);
		} catch (Exception ex) {
			throw new RuntimeException();
		}
	}
	
}
分享到:
评论
3 楼 wiyis 2013-01-10  
谢谢啊,哥们
2 楼 小鑫。 2012-11-14  
wiyis 写道
您能提供一个调用示例么,有几个参数不知道怎么传


实体:
public class User{
  private String name;
  private String age;

  get...set...
}


XML:
<Users>
  <User>
    <name>张三</name>
    <age>20</age>
  </User>
  <User>
    <name>李四</name>
    <age>21</age>
  </User>
  <User>
    <name>王五</name>
    <age>22</age>
  </User>
</Users>


对应的参数:
    /** 
     * 解析XML转换成对象 
     *  
     * @param is 
     *            输入流,这个就是XML文件的流
     * @param clazz 
     *            对象Class,User类的class
     * @param fields 
     *            字段集合一一对应节点集合,例如这个类就有两个字段,name和age,放入         List中,放入的位置要和下面的XML节点的位置一一对应,
List<String> fields = new ArrayList<String>();
fields.add("name");
fields.add("age");
     * @param elements 
     *            节点集合一一对应字段集合,例如这个XML有两个属性,name和age,放入List中,放入的位置要和上面的实体属性的位置一一对应,
List<String> elements = new ArrayList<String>();
fields.add("name");
fields.add("age");
     * @param itemElement 
     *            每一项的节点标签,在XML中按哪个节点当成一组,这里是User
     * @return 
     */  
1 楼 wiyis 2012-11-10  
您能提供一个调用示例么,有几个参数不知道怎么传

相关推荐

    Android xml 解析工具类

    Android XML 解析工具类 Android XML 解析工具类是一个功能强大且实用的工具类,提供了多种方法来解析 XML 文档。该工具类提供了四种方法来获取 XML 节点的内容,分别是 getMarkString、getMarkString、...

    Android 解析xml实现类似网易客户端源码

    本示例将详细讲解如何在Android应用程序中解析XML以实现类似网易客户端的功能。首先,让我们了解XML解析的基本概念,然后探讨在Android中实现这一功能的关键技术和步骤。 XML是一种自描述性的标记语言,它允许我们...

    Android开发中解析xml文件XmlUtils工具类与用法示例

    本文实例讲述了Android开发中解析xml文件XmlUtils工具类与用法。分享给大家供大家参考,具体如下: 1. xmlUtil工具类 package com.example.xmlpaserutil.util; import java.io.InputStream; import java.lang....

    pull解析器解析XML工具类

    在Android开发中,由于其轻量级和低内存占用,Pull解析器常常被用来解析XML文档,尤其是在处理大数据量时,相比DOM和SAX解析器更为高效。 Pull解析器是一种事件驱动的解析方式,它不会一次性加载整个XML文档到内存...

    Android解析XML使用WebView显示

    以上就是“Android解析XML并使用WebView显示”的主要技术点,开发者需要理解并掌握这些知识点,才能在实际项目中顺利实现这一功能。通过不断实践和学习,我们可以更好地理解和运用这些工具,提升应用的质量和用户...

    Android 封装pull解析xml

    在需要解析XML的地方,直接调用封装好的工具类方法,如`String content = XmlParserUtil.getTagContent(inputStream, "tagName")`,即可得到指定标签的内容。 7. **异常处理**: 解析过程中可能出现的异常,如...

    android xml 工具

    1. **XML解析**:工具首先读取XML文件,然后使用Java的DOM解析器(如org.w3c.dom库中的DocumentBuilderFactory和DocumentBuilder)来解析XML文档。DOM解析器将整个XML文件加载到内存中,形成一个可操作的树形结构,...

    android XMl 解析神奇xstream 三: 把复杂对象转换成对象

    `toXML()`用于将Java对象转换为XML字符串,而`fromXML()`则将XML字符串解析回对应的Java对象。XStream通过使用所谓的“alias”来简化XML结构,使得类名和XML标签之间可以进行映射。 在Android项目中,首先需要添加...

    android pull解析xml源码

    "Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...

    解析xml文件 android

    本篇将详细介绍如何在Eclipse中解析XML文件,以及相关的Android XML解析技术。 首先,Android SDK提供了两种主要的XML解析方法:DOM(Document Object Model)和SAX(Simple API for XML)。DOM解析器将整个XML文件...

    android XMl 解析神奇xstream 二: 把对象转换成xml

    9. **appcompat_v7库**:提到的`appcompat_v7`库是Android Support Library的一部分,它提供了对早期版本Android API的支持,包括Material Design组件和主题,以及一些实用工具类。在本主题中,它并不直接与XStream...

    android java xml 解析生成jar

    6. **解析XML文档**:除了创建XML,JDOM也可以用于解析已存在的XML文件。首先,读取XML文件: ```java SAXBuilder saxBuilder = new SAXBuilder(); Document doc = saxBuilder.build(new File("input.xml")); ``...

    android String.xml Excel 相互转换工具

    在Android应用开发中,国际...总的来说,`android String.xml Excel 相互转换工具`是Android应用开发中的利器,它们简化了国际化过程中字符串资源的管理,提高了开发效率,是每个进行多语言支持的项目必备的辅助工具。

    android解析生成xml文件

    综上所述,"android解析生成xml文件"这一主题涵盖了XML的基本概念、Android中的XML应用、XML解析与生成的方法,以及可能涉及到的工具和自定义工具类的使用。如果想深入了解Android开发中的XML处理,阅读这篇博客会是...

    android XML文件解析和序列化 demo

    在"android XML文件解析和序列化 demo"中,可能演示了如何创建自定义对象,使用Pull解析器读取XML文件,将数据填充到对象列表,然后使用类似Gson或自定义的方法将对象列表序列化回XML文件。 **代码示例** ```java ...

    android 使用Sax解析XML 源码实例

    使用SAX方式解析XML SAX 是读取和操作 XML 数据的更快速、更轻量的方 法。SAX 允许您在读取文档时处理它,从而不必等待整个文档被存储之后才采取操作。它不涉及 DOM 所必需的开销和概念跳跃。 SAX API是一个基于事件...

    Android plist 解析工具类及城市plist文件

    - 转换数据格式:然后,根据读取到的内容,我们需要解析XML结构并转换为Java对象,如ArrayList、HashMap等。 - 自定义解析器:由于Android没有内置的.plist解析库,通常需要自定义解析类,实现XMLPullParser接口,...

    Android读写XML.doc

    - `android.util.Xml`:Android提供的一个简化版的XML处理工具,封装了上述包的功能,使得XML操作更加简洁。 4. **XML读取示例(DOM)** - 以下是一个简单的使用DOM解析XML文件的Java代码示例: ```java import...

    Android开发常用工具类

    - `XmlUtils`:处理XML数据,如解析XML文件、转化成对象等。 - `GsonUtils`:基于Gson库,用于JSON数据的序列化和反序列化,方便地将Java对象转换为JSON字符串,反之亦然。 7. **权限管理工具类**: - `...

Global site tag (gtag.js) - Google Analytics