`
wangleyiang
  • 浏览: 220998 次
社区版块
存档分类
最新评论

Android DOM解析XML格式数据

阅读更多

下面简单的说明使用DOM如何解析XML格式数据,主要代码如下:

    		DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
			Document document = documentBuilder.parse(inputStream);
			Element root = document.getDocumentElement();
			NodeList nodes = root.getElementsByTagName("person");
			for(int i = 0; i < nodes.getLength(); i++) {
				Element personElement = (Element) nodes.item(i);
				System.out.println("****************************");
				System.out.println("id:" + personElement.getAttribute("id"));
				stringBuffer.append("*************************\n").append("id:" + personElement.getAttribute("id") + "\n");
				NodeList childNodes = personElement.getChildNodes();
				for(int y = 0; y < childNodes.getLength(); y++) {
					Node childNode = childNodes.item(y);
					if(childNode.getNodeType() == Node.ELEMENT_NODE) {
						Element childElement = (Element) childNode;
						if("name".equals(childElement.getNodeName())) {
							System.out.println("name:" + childElement.getFirstChild().getNodeValue());
							stringBuffer.append("name:" + childElement.getFirstChild().getNodeValue() + "\n");
						} else if("address".equals(childElement.getNodeName())) {
							System.out.println("address:" + childElement.getFirstChild().getNodeValue());
							stringBuffer.append("address:" + childElement.getFirstChild().getNodeValue() + "\n");
						}
					}
				}
			}

被解析的XML文件内容如下:

<persons>
	<person id="1">
		<name>张三</name>
		<address>安徽</address>
	</person>
	<person id="2">
		<name>李四</name>
		<address>上海</address>
	</person>
	<person id="3">
		<name>王五</name>
		<address>北京</address>
	</person>
</persons>

 解析的结果如下:




Activity代码如下:

import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

public class AndroidDOMActivity extends Activity {
	
	private Handler mHandler = new Handler();
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        new Thread(new Runnable() {
			
			@Override
			public void run() {
				try {
					Thread.sleep(5 * 000);
					mHandler.post(new Runnable() {
						
						@Override
						public void run() {
							try {
								((TextView)findViewById(R.id.display)).setText(parserXml(getAssets().open("data.xml")));
							} catch (IOException e) {
								e.printStackTrace();
							}
						}
					});
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}).start();
        
    }
    
	private String parserXml(InputStream inputStream) {
    	
    	StringBuffer stringBuffer = new StringBuffer();
    	try {
    		
    		DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
			Document document = documentBuilder.parse(inputStream);
			Element root = document.getDocumentElement();
			NodeList nodes = root.getElementsByTagName("person");
			for(int i = 0; i < nodes.getLength(); i++) {
				Element personElement = (Element) nodes.item(i);
				System.out.println("****************************");
				System.out.println("id:" + personElement.getAttribute("id"));
				stringBuffer.append("*************************\n").append("id:" + personElement.getAttribute("id") + "\n");
				NodeList childNodes = personElement.getChildNodes();
				for(int y = 0; y < childNodes.getLength(); y++) {
					Node childNode = childNodes.item(y);
					if(childNode.getNodeType() == Node.ELEMENT_NODE) {
						Element childElement = (Element) childNode;
						if("name".equals(childElement.getNodeName())) {
							System.out.println("name:" + childElement.getFirstChild().getNodeValue());
							stringBuffer.append("name:" + childElement.getFirstChild().getNodeValue() + "\n");
						} else if("address".equals(childElement.getNodeName())) {
							System.out.println("address:" + childElement.getFirstChild().getNodeValue());
							stringBuffer.append("address:" + childElement.getFirstChild().getNodeValue() + "\n");
						}
					}
				}
			}
			
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (inputStream != null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		return stringBuffer.toString();
    	
    }
    
}

 

说明:

  • 开启新的线程做解析操作;
  • 利用Handler更新UI;

布局文件如下main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/display"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

 

 

  • 大小: 24.9 KB
  • 大小: 7.4 KB
  • 大小: 10.1 KB
分享到:
评论

相关推荐

    Android Dom解析XML

    总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...

    android Dom解析xml文件

    本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...

    android上使用DOM解析XML

    下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...

    DOM解析xml文件实例讲解

    本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...

    android下解析xml文件的demo

    在Android开发中,XML文件常用于存储数据、配置文件或者作为接口返回的数据格式。本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible ...

    Dom方式解析XML

    综上所述,DOM解析XML是Android开发中处理XML数据的一种常见方法,尤其适用于小规模数据。通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和...

    Android XML解析(DOM、PULL、SAX三种方式)

    在提供的`DomXmlOperate`示例中,可能包含了如何使用DOM解析XML并绑定到View(如使用ButterKnife库)的代码。 2. PULL解析: PULL解析器是事件驱动的,它以拉取(pull)的方式逐个处理XML元素,不需要一次性加载...

    Android应用源码之28.使用DOM和pull解析XML.zip

    使用DOM解析XML的基本步骤如下: 1. 加载XML文件:使用`DocumentBuilderFactory`创建`DocumentBuilder`,然后调用`parse()`方法加载XML。 2. 构建DOM树:`DocumentBuilder`会将XML转换为`Document`对象。 3. 遍历DOM...

    Android使用DOM方式解析XML

    通过DOM解析XML,Android应用能够轻松处理和展示XML数据。虽然DOM方法简单易用,但请注意它会将整个XML文档加载到内存中,对于大型XML文件可能会消耗大量资源。在处理大文件时,可以考虑使用SAX(简单API for XML)...

    android dom方式解析xml

    本文将深入探讨在Android中如何使用DOM方式解析XML。 首先,我们需要理解DOM解析的基本原理。DOM解析器会将整个XML文件加载到内存中,形成一个节点树。这棵树的根节点代表整个XML文档,而其他节点则表示文档中的...

    经典的DOM解析XML范例

    【DOM解析XML】 在Java中,解析XML文档有多种方式,其中DOM(Document Object Model)和SAX(Simple API for XML)是最常见的两种。DOM是一种基于树形结构的XML处理方式,它将整个XML文档加载到内存中,形成一个完整...

    java使用dom解析xml

    在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,形成一个树形结构,然后通过这个结构来访问和操作 XML 的各个部分。 首先,我们需要引入 Java 的核心解析库,即 javax.xml.parsers 命名空间。这个库...

    android版本更新与dom解析xml

    本节将深入探讨Android版本更新的过程以及DOM解析XML的技术。 一、Android版本更新 1. 版本跟进:Android系统经历了从早期的API Level 1到目前的API Level 30等多个版本。每个新版本通常包含对性能、安全性和用户...

    android pull解析xml源码

    在Android平台上,XML数据解析是常见的任务,用于处理如配置文件、网络响应等XML格式的数据。"Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的...

    android dom解析全世界地区城市xml并存入数据库

    android 使用dom解析全世界地区城市xml文件并存入数据库

    android 解析XML文件 生成XML文件

    二、DOM解析XML文件 DOM(Document Object Model)将整个XML文档加载到内存中,形成一棵树形结构,方便遍历和操作。对于小规模的XML文件,DOM解析器是一个不错的选择。Java和Kotlin的DOM解析步骤如下: 1. 加载XML...

    Android sax pull dom 文件解析 示例

    DOM解析器将整个XML文件加载到内存中,构建一个树形结构,可以方便地通过节点操作访问XML数据。优点是操作灵活,适合小到中等大小的XML文档;缺点是如果XML文件过大,可能导致内存消耗过高。 3. **Pull解析器** ...

    SAX,PULL,DOM解析XML

    DOM解析器适合处理小型或中型XML文件,因为它将整个文档加载到内存中,对于大文件可能会导致内存消耗过大。DOM的优点在于提供了一种直观的方式来操作XML,但缺点是其内存开销和性能影响。 下面分别介绍这三个解析...

    Android解析xml(2)---DOM解析

    以下是关于Android中DOM解析XML的详细知识讲解。 1. **DOM解析器简介** DOM解析器是XML解析的一种方法,它将整个XML文档加载到内存中的一个对象模型,这个模型称为DOM树。开发者可以遍历这个树来访问或修改XML文件...

    DOM读取XML文件

    DOM解析XML文件的基本步骤如下: 1. 引入必要的库:在Android项目中,我们需要引入`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`库,这些库提供了解析XML的工具。 2. 创建...

Global site tag (gtag.js) - Google Analytics