`

DOM方式解析xml文件2(解析本地xml)

阅读更多
这个与1的方法唯一不同的就是传递InputSource的参数:
上代码:
1.DomParseXml.java
package cn.com;

import java.io.File;
import java.io.StringReader;

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

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class DomParseXml extends Activity implements OnClickListener {

	File fl;
	ListView lv;

	ArrayAdapter<String> adapter;

	private EditText et;

	@Override
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);

		Button bt = (Button) findViewById(R.id.bt);

		bt.setOnClickListener(this);

		et = (EditText) findViewById(R.id.et);

	}

	@Override
	public void onClick(View agr0) {

		String[] data = null;
		Node nRoot = root("root").item(0);
		// 获得孩子结点
		NodeList child = nRoot.getChildNodes();
		// 获得子节点的个数 
		int childSize = child.getLength();
		System.out.println("**********childSize************" + childSize);

		data = new String[childSize];

		for (int i = 0; i < childSize; i++) {
			// 第一个子节点,city
			Node nChild = child.item(i);
			// 获得子节点
			if (nChild.hasAttributes()) {
				// 获得节点属性
				data[i] = nChild.getAttributes().getNamedItem("id")
						.getNodeValue();
				System.out.println("**********************" + data[i]);

			}
		}
		setTitle(et.getText().toString()); // 显示查询的城市
	}

	private NodeList root(final String str) {

		NodeList root = null;

		try {

			String xml = "<root><demo id='73'><name>MjAxMMrAveexrQ==</name><type>0+nA1g==</type><demoTitle>MjAxMMrAveexrQ==</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0yNSAxNjozMTozOC4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='133' type='jpg' order='1'></pic><pic id='134' type='jpg' order='1'></pic></picRoot><videoRoot></videoRoot></demo><demo id='74'><name>y66yqLutwMg=</name><type>0+nA1g==</type><demoTitle>y66yqLutwMg=</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0yNSAxNjozMToyMy4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='135' type='jpg' order='1'></pic><pic id='136' type='jpg' order='1'></pic></picRoot><videoRoot></videoRoot></demo><demo id='75'><name>t++7y8340MLOxQ==</name><type>0+nA1g==</type><demoTitle>t++7y8340MLOxQ==</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0yNSAxNjozNzowMC4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='137' type='jpg' order='1'></pic><pic id='138' type='jpg' order='1'></pic></picRoot><videoRoot></videoRoot></demo><demo id='76'><name>svrGt8P7s8Y=</name><type>0+nA1g==</type><demoTitle>svrGt7HqzOI=</demoTitle><size>Mjk4MzU3Nw==</size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0zMCAxNTo1MTo0MS4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail>svrGt8/qz7jLtcP3</releaseDetail><picRoot><pic id='139' type='jpg' order='1'></pic><pic id='140' type='jpg' order='1'></pic></picRoot><videoRoot><video id='68' type='flv' order='0'>0d3KvrDmw/uzxg==</video></videoRoot></demo><demo id='77'><name>svrGt8P7s8Y=</name><type>0+nA1g==</type><demoTitle>svrGt7HqzOI=</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNy0wMSAxMzo0NTo0MS4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='141' type='png' order='1'></pic><pic id='142' type='png' order='1'></pic></picRoot><videoRoot><video id='69' type='flv' order='0'>0d3KvrDmw/uzxg==</video></videoRoot></demo></root>";

			// 创建一个新的字符串
			StringReader read = new StringReader(xml);

			InputSource is = new InputSource(read);

			DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();

			DocumentBuilder dom = factory.newDocumentBuilder();

			Document doc = dom.parse(is);

			root = doc.getElementsByTagName(str);

		} catch (Exception e) {

			e.printStackTrace();

		}

		return root;

	}

}


2.main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="@string/hello" />
	<EditText android:text="" android:id="@+id/et"
		android:layout_width="150dp" android:layout_height="wrap_content"></EditText>
	<Button android:text="button" android:id="@+id/bt"
		android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>


分享到:
评论

相关推荐

    使用dom4j 和本地dom 解析xml 文件

    在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...

    DOMParser解析xml

    在实际开发中,除了DOMParser,还有许多库和框架提供更高级的XML处理功能,如jQuery的`.load()`方法,或者针对Node.js环境的`xml2js`库。 总结,DOMParser是JavaScript中处理XML文档的重要工具,通过DOM API可以...

    Dom方式解析XML

    - DOM解析XML时需要一次性加载整个文件,对内存消耗较大,不适合处理大文件。 - 解析过程中可能出现异常,如文件不存在、格式错误等,需要进行异常处理。 - XML文件路径应正确,可能需要使用相对路径或获取绝对...

    DOM解析XML文件例子

    在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...

    DOM解析xml文件实例讲解

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

    android Dom解析xml文件

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

    用dom解析xml文件

    使用DOM解析XML文件的步骤如下: 1. 加载XML文件:首先,你需要创建一个`DocumentBuilderFactory`对象,然后通过`newDocumentBuilder()`方法得到一个`DocumentBuilder`实例。接着,调用`parse()`方法,传入XML文件...

    Dom JDom 解析xml 文件

    使用DOM解析XML的基本步骤如下: 1. 加载XML文件:通过`javax.xml.parsers.DocumentBuilderFactory`创建`DocumentBuilder`,然后使用`parse()`方法加载XML文件。 2. 创建DOM树:`DocumentBuilder`的`parse()`方法...

    dom4j解析xml文件(增删改查)

    在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...

    SAX解析XML文件实例

    SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析...当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例

    分别使用DOM和DOM4j解析XML文件

    使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory创建DocumentBuilder实例。 3. 使用DocumentBuilder的parse()方法解析XML文件,得到Document对象。 4. 通过...

    dom4解析xml需要的包

    1. **解析XML**:DOM4J支持使用DOM、SAX或StAX解析器读取XML文件,其中DOM是将整个XML文档加载到内存中,适用于小型文件;SAX是事件驱动的解析,适用于大文件;而StAX则提供了一种更高效的方式,通过迭代器逐个处理...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    android dom方式解析xml

    总的来说,DOM解析方式在Android中适用于小型或中型XML文件,因为它将整个XML加载到内存,可以快速访问任何节点,但不适合处理大型XML文件。对于大型文件,更推荐使用SAX(Simple API for XML)或Pull解析器,它们以...

    Java解析XML文件的DOM和SAX方式.doc

    Java 解析 XML 文件的 DOM 和 SAX 方式是指在 Java 中使用 Document Object Model(DOM)和 Simple API for XML(SAX)两种方式来解析 XML 文件的技术。下面将详细介绍这两种方式的原理、实现和优缺点。 DOM 方式 ...

    DOM解析XML文件实例

    以一个实例来说明DOM解析XML文件的方法与过程。

    dom4j解析xml文件的压缩包

    5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...

    用dom4j解析xml文件

    本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...

    java平台中使用DOM解析xml文件

    使用DOM解析XML的基本步骤如下: 1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers....

Global site tag (gtag.js) - Google Analytics