`

DOM方式解析xml文件1(解析网路xml)

阅读更多
其实网上很多资料讲关于解析xml的问题,大多数我都看的一知半解,今天终于找了个不错的例子,放在这里跟大家共享:
先上代码:
1.DomParseXml.java文件
package cn.com;

import java.io.File;
import java.io.InputStreamReader;
import java.net.URL;

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;

        //这个地址返回的内容的xml文件我下面会贴上
        //大家可以先跳过这个java文件看下xml文件结构
	private final String net = "http://www.google.com/ig/api?hl=zh-cn&weather=";

	private String addr;

	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);
                //输入一个城市(wuhan或beijing等)
		et = (EditText) findViewById(R.id.et);

	}

	@Override
	public void onClick(View agr0) {

		// TODO Auto-generated method stub

		addr = et.getText().toString();

		switch (agr0.getId()) {

		case R.id.bt:
			// 获取输入的内容,取出空格
			if (!addr.trim().equals("")) {

				addr = net + addr;
				// System.out.println(addr);

				String[] data = null;
				// 将weather设置为根节点
				// Node nRoot = root(addr,"weather").item(0);
                                // 这里返回的是一个NodeList
				Node nRoot = root(addr, "forecast_information").item(0);
				// 获得孩子结点
				NodeList child = nRoot.getChildNodes();
				// 获得子节点的个数 7
				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("data")
								.getNodeValue();
						System.out.println("**********************" + data[i]);

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

	private NodeList root(final String url, final String str) {

		NodeList root = null;

		try {

			InputSource is = new InputSource(new InputStreamReader(new URL(url)
					.openStream()));

			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>


3.每次都强调下的一条:
<uses-permission android:name="android.permission.INTERNET">
	</uses-permission>

另外我经常遇到在启动模拟器的时候那个模拟器连不上互联网,那个右上角的信号图标是个叉,我也不知道怎么修改,重新启动了下模拟器后就又可以联网了.不知道是什么原因,我们这种联网的应用如果在测试的时候没有注意到这的话,程序就会报错,说:
can't reach the host之类的,哪位兄弟姐妹知道是什么原因的话,麻烦告知一下,谢谢
另外附上查询到的xml文件:
<?xml version="1.0" ?> 
- <xml_api_reply version="1">
- <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
- <forecast_information>
  <city data="Beijing, Beijing" /> 
  <postal_code data="beijing" /> 
  <latitude_e6 data="" /> 
  <longitude_e6 data="" /> 
  <forecast_date data="2010-07-01" /> 
  <current_date_time data="2010-07-02 00:00:00 +0000" /> 
  <unit_system data="SI" /> 
  </forecast_information>
- <current_conditions>
  <condition data="晴" /> 
  <temp_f data="73" /> 
  <temp_c data="23" /> 
  <humidity data="湿度: 83%" /> 
  <icon data="/ig/images/weather/sunny.gif" /> 
  <wind_condition data="风向: 北、风速:4 米/秒" /> 
  </current_conditions>
- <forecast_conditions>
  <day_of_week data="周四" /> 
  <low data="21" /> 
  <high data="33" /> 
  <icon data="/ig/images/weather/chance_of_rain.gif" /> 
  <condition data="可能有雨" /> 
  </forecast_conditions>
- <forecast_conditions>
  <day_of_week data="周五" /> 
  <low data="22" /> 
  <high data="33" /> 
  <icon data="/ig/images/weather/sunny.gif" /> 
  <condition data="晴" /> 
  </forecast_conditions>
- <forecast_conditions>
  <day_of_week data="周六" /> 
  <low data="24" /> 
  <high data="33" /> 
  <icon data="/ig/images/weather/mostly_sunny.gif" /> 
  <condition data="以晴为主" /> 
  </forecast_conditions>
- <forecast_conditions>
  <day_of_week data="周日" /> 
  <low data="21" /> 
  <high data="35" /> 
  <icon data="/ig/images/weather/mostly_sunny.gif" /> 
  <condition data="晴间多云" /> 
  </forecast_conditions>
  </weather>
  </xml_api_reply>
分享到:
评论

相关推荐

    Dom JDom 解析xml 文件

    XML(eXtensible Markup...总之,DOM和JDOM是Java中解析XML的重要工具,它们提供了灵活的方式来读取、修改和写入XML文件。根据项目需求和性能考虑,选择合适的方法并熟练掌握其用法,能极大地提升XML处理的效率和质量。

    Android使用DOM方式解析XML

    本篇文章将深入探讨如何使用DOM(文档对象模型)解析XML文件,并将其内容显示在应用程序的用户界面上。 首先,理解DOM解析的基本概念至关重要。DOM是一种标准,允许程序以树形结构访问和操作XML文档的全部内容。它...

    DOM4J解析XML时DTD路径问题

    然而,在某些情况下,如离线环境或者网络连接不稳定的情况下,这种行为会导致DOM4J无法正确地解析XML文件,从而引发异常。 #### DTD的作用与工作原理 DTD是一种用于定义XML文档结构的语言。它定义了文档中元素的...

    dom,dom4j,sax 解析xml文件实例

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于网络数据交换、配置文件存储等场景。本文将深入探讨DOM、DOM4J和SAX三种常用的XML解析方法,并结合具体的实例进行详细讲解。 首先,DOM...

    DOM4J解析XML代码

    解析XML文件有多种方法,常见的有DOM(文档对象模型),DOM4J以及SAX(简单API文档解析)。DOM方法将整个XML文档加载进内存,形成一个树状结构,然后通过遍历这个结构进行操作,这种方式适合文档较小且需要频繁操作...

    dom4j 解析xml文件小例子

    在本例中,我们将深入探讨如何使用DOM4J来解析XML文件。 首先,我们需要理解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输数据,具有自描述性和结构化的特点,广泛应用于网络...

    易语言 xml解析 易语言 xml解析 教程 带源码

    常见的解析方式有DOM(Document Object Model)和SAX(Simple API for XML)两种。DOM解析器会将整个XML文档加载到内存中,形成一个树形结构,适合小规模数据处理;SAX解析器则是事件驱动的,逐行读取XML,适合处理...

    DOM,SAX解析xml文件

    在处理XML文件时,有两种主要的解析方式:DOM(Document Object Model)和SAX(Simple API for XML)。 **DOM解析器** 是一种将整个XML文档加载到内存中形成一棵树状结构的方法。每个节点代表XML文档的一部分,可以...

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

    本资料包主要涵盖了两种常见的XML解析方式:DOM(Document Object Model)和Pull解析器。以下是这两种解析方法的详细说明。 **DOM解析** DOM解析是一种将整个XML文档加载到内存中,形成一个树形结构的方法。通过DOM...

    delphi解析xml文件实例

    在IT领域,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种软件和网络服务中。Delphi是一款强大的Object Pascal编程环境,它提供了丰富的库和工具来处理XML数据,包括解析...

    MFC、DOM实现的XML文件解析、修改和生成

    3. **XML文件解析**:在MFC中,使用DOM解析XML文件的过程包括创建`IXMLDOMDocument`对象,加载XML文件,然后遍历节点树以获取所需信息。例如,`LoadXML`方法可以用来加载XML字符串,而`load`方法则可以加载XML文件。...

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

    在IT行业中,XML(eXtensible Markup Language)是一种重要的数据交换格式,广泛应用于网络通信、数据存储和配置文件等领域。本篇文章将深入探讨如何使用Pull解析器来读取XML文件,以及如何生成XML文件。Pull解析器...

    xml学习,多种解析xml文件的方法

    1. DOM(Document Object Model)解析:DOM将整个XML文档加载到内存中形成一个树形结构,允许开发者通过节点操作访问和修改XML数据。例如,使用Java的DOM解析器`javax.xml.parsers.DocumentBuilderFactory`可以创建`...

    java解析xml,dom解析,jsoup解析,完整项目

    DOM解析的优点是可以方便地进行随机访问,但缺点是如果XML文件较大,会占用大量内存,效率较低。在Java中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`等类来实现DOM解析。...

    XML.rar_XML SAX_XML java_dom xml_java xml_java解析xml

    本篇文章将重点讲解XML在Java中的解析方式,特别是DOM和SAX解析。 1. DOM解析: DOM(Document Object Model)是W3C推荐的一种处理XML文档的标准模型。它将整个XML文档加载到内存中,构建一个树形结构,允许开发者...

    pb下读写xml文件的例子.rar_pb_pb 读取xml_pb 读取xml文件_pb9 xml_pb下读写xml文件的例子

    总结,PowerBuilder 9为处理XML文件提供了强大的支持,通过XMLDocument对象和DOM解析器,我们可以轻松地读取、写入和操作XML数据。这些功能使PB9成为开发涉及XML的应用的理想工具,帮助开发者高效地完成数据交换和...

    sax解析xml文件

    相较于DOM(Document Object Model)解析器,SAX解析器占用更少的内存和处理时间,因为它不会一次性加载整个XML文档到内存,而是采用事件驱动的方式逐个处理XML元素。在本项目中,"saxloadxml"应该是实现了一个SAX...

    full方式解析xml

    "full方式解析xml"通常指的是SAX(Simple API for XML)解析器的事件驱动模型,它是一种轻量级、高效的XML解析方法。在Android系统中,由于资源限制,这种解析方式尤其受到青睐。本文将详细介绍SAX解析XML的方式及其...

    DOM4J解析XML

    1. **DOM解析方式**:DOM4J通过DOM接口来解析XML,将整个XML文档加载到内存中形成一个树形结构,称为DOM树。这样做的优点是可以方便地通过路径导航访问任何元素,缺点是如果XML文件过大,可能会消耗大量内存。 2. *...

    PULL、DOM解析XML

    DOM(Document Object Model)是另一种常见的XML解析方式,它将整个XML文档加载到一个树形结构中,称为DOM树。每个XML元素、属性、文本节点都在树中对应一个节点。通过DOM解析,可以方便地访问和修改文档的任何部分...

Global site tag (gtag.js) - Google Analytics