- 浏览: 1204438 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
这个例子是进一步熟悉DOM解析xml文件的方法,附带基础的文档说明,大部分内容来自于EOE论坛的帖子消息:
先直接上代码:
1.DomStudy.java文件
2.assets文件夹中test.xml文件
下面对这个例子进行必要的文档分析:
DOM是Document Object Model的缩写,即文档对象模型.
xml数据将组织为一棵树,所以DOM就是对这棵树的对象描述.
下面通过一个简单的例子进行学习:
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message>Good-bye serialization, hello Java!</message>
</messages>
step 1:我们需要建立一个解析器工厂,以利用这个工厂获得一个具体的解析器对象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
PS:使用DocumentBuilderFactory的目的是为了创建与具体解析器无关的程序,当调用
newInstance()的静态方法时,它会根据一个系统变量来决定具体使用那个解析器,
又因为所有解析器都服从于JAXP所定义的接口,所以无论具体使用那个解析器,代码都
是一样的.所以在不同的解析器之间切换时,只需要修改系统变量的值,而不用更改任何代码.
step 2:当获得一个工厂对象后,使用它的静态方法newDocumentBuilder()就可以获得一个
DocumentBuilder对象,这个对象代表了具体的DOM解析器,但具体是哪一种解析器,
微软的,IBM的,对于程序而言,并不重要;
DocumentBuilder db = dbf.newDocumentBuilder();
step 3:DocumentBuilder的parse()方法接受一个XML文档名作为输入参数,返回一个Document对象,
这个Document对象就代表了一个XML文档的树模型。以后所有的对XML文档的操作,都与解析
器无关,直接在这个Document对象上进行操作就可以了。而具体对Document操作的方法,就
是由DOM所定义的了
Document doc = db.parse("c:/xml/message.xml");
也可以在android中这样定义:
在assets文件夹中建立一个test.xml文件,就是上述xml内容,
InputStream is = getAssets().open("test.xml");
然后通过Document doc = db.parse(is);获取这个Document对象进行操作:
PS:Jaxp支持W3C所推荐的DOM 2。如果你对DOM很熟悉,那么下面的内容就很简单了:只需要按照DOM的
规范来进行方法调用就可以。当然,如果你对DOM不清楚,也不用着急,后面我们会有详细的介绍。
在这儿,你所要知道并牢记的是:DOM是用来描叙XML文档中的数据的模型,引入DOM的全部原因就
是为了用这个模型来操作XML文档的中的数据。DOM规范中定义有节点(即对象)、属性和方法,
我们通过这些节点的存取来存取XML的数据。
从Document对象开始,我们就可以开始我们的DOM之旅了。使用Document对象的getElementsByTagName()
方法,我们可以得到一个NodeList对象,一个Node对象代表了一个XML文档中的一个标签元素,而NodeList
对象,观其名而知其意,所代表的是一个Node对象的列表
step 4: NodeList nl = doc.getElementsByTagName("message");
我们通过这样一条语句所得到的是XML文档中所有<message>标签对应的Node对象的一个列表。
然后,我们可以使用NodeList对象的item()方法来得到列表中的每一个Node对象
Node my_node = nl.item(0);
当一个Node对象被建立之后,保存在XML文档中的数据就被提取出来并封装在这个Node中了。在这个例子
中,要提取Message标签内的内容,我们通常会使用Node对象的getNodeValue()方法:
String message = my_node.getFirstChild().getNodeValue();
PS:请注意,这里还使用了一个getFirstChild()方法来获得message下面的第一个子Node对象。虽然在message标
签下面除了文本外并没有其它子标签或者属性,但是我们坚持在这里使用getFirseChild()方法,这主要和W3C对
DOM的定义有关。W3C把标签内的文本部分也定义成一个Node,所以先要得到代表文本的那个Node,我们才能够使
用getNodeValue()来获取文本的内容。现在,既然我们已经能够从XML文件中提取出数据了,我们就可以把这些
数据用在合适的地方,来构筑应用程序
先直接上代码:
1.DomStudy.java文件
package cn.com; 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.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import android.app.Activity; import android.os.Bundle; public class DomStudy extends Activity { String xml = ""; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { parseXml(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void parseXml() throws IOException { // 建立一个解析器工厂,以利用这个工厂来获得一个具体的解析器对象 // 使用DocumentBuilderFacotry的目的是为了创建与具体解析器无关的程序, // 当DocumentBuilderFactory类的静态方法newInstance()被调用时, // 它根据一个系统变量来决定具体使用哪一个解析器 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); InputStream is = getAssets().open("test.xml"); // parse()方法 // 接受一个XML文档名作为输入参数 // 接受一个输入流 // 返回一个Document对象,代表了一个XML文档的树模型 // 以后所有的对XML文档的操作,都与解析器无关,直接在这个Document对象上进行操作就可以了 Document doc = db.parse(is); NodeList nl = doc.getElementsByTagName("message"); System.out.println("nl.getLength() ==========" + nl.getLength()); Node my_node = nl.item(0); if (my_node.hasAttributes()) { System.out.println("++++++++++++++++++" + my_node.getAttributes().getNamedItem("id") .getNodeValue()); } String message = my_node.getFirstChild().getNodeValue(); System.out.println("**********8888message ==" + message); } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2.assets文件夹中test.xml文件
<?xml version="1.0" encoding="UTF-8"?> <messages> <message id="1">Good-bye serialization, hello Java!</message> <message id="2">Good-bye serialization, hello Java!</message> <message id="3">Good-bye serialization, hello Java!</message> </messages>
下面对这个例子进行必要的文档分析:
DOM是Document Object Model的缩写,即文档对象模型.
xml数据将组织为一棵树,所以DOM就是对这棵树的对象描述.
下面通过一个简单的例子进行学习:
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message>Good-bye serialization, hello Java!</message>
</messages>
step 1:我们需要建立一个解析器工厂,以利用这个工厂获得一个具体的解析器对象:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
PS:使用DocumentBuilderFactory的目的是为了创建与具体解析器无关的程序,当调用
newInstance()的静态方法时,它会根据一个系统变量来决定具体使用那个解析器,
又因为所有解析器都服从于JAXP所定义的接口,所以无论具体使用那个解析器,代码都
是一样的.所以在不同的解析器之间切换时,只需要修改系统变量的值,而不用更改任何代码.
step 2:当获得一个工厂对象后,使用它的静态方法newDocumentBuilder()就可以获得一个
DocumentBuilder对象,这个对象代表了具体的DOM解析器,但具体是哪一种解析器,
微软的,IBM的,对于程序而言,并不重要;
DocumentBuilder db = dbf.newDocumentBuilder();
step 3:DocumentBuilder的parse()方法接受一个XML文档名作为输入参数,返回一个Document对象,
这个Document对象就代表了一个XML文档的树模型。以后所有的对XML文档的操作,都与解析
器无关,直接在这个Document对象上进行操作就可以了。而具体对Document操作的方法,就
是由DOM所定义的了
Document doc = db.parse("c:/xml/message.xml");
也可以在android中这样定义:
在assets文件夹中建立一个test.xml文件,就是上述xml内容,
InputStream is = getAssets().open("test.xml");
然后通过Document doc = db.parse(is);获取这个Document对象进行操作:
PS:Jaxp支持W3C所推荐的DOM 2。如果你对DOM很熟悉,那么下面的内容就很简单了:只需要按照DOM的
规范来进行方法调用就可以。当然,如果你对DOM不清楚,也不用着急,后面我们会有详细的介绍。
在这儿,你所要知道并牢记的是:DOM是用来描叙XML文档中的数据的模型,引入DOM的全部原因就
是为了用这个模型来操作XML文档的中的数据。DOM规范中定义有节点(即对象)、属性和方法,
我们通过这些节点的存取来存取XML的数据。
从Document对象开始,我们就可以开始我们的DOM之旅了。使用Document对象的getElementsByTagName()
方法,我们可以得到一个NodeList对象,一个Node对象代表了一个XML文档中的一个标签元素,而NodeList
对象,观其名而知其意,所代表的是一个Node对象的列表
step 4: NodeList nl = doc.getElementsByTagName("message");
我们通过这样一条语句所得到的是XML文档中所有<message>标签对应的Node对象的一个列表。
然后,我们可以使用NodeList对象的item()方法来得到列表中的每一个Node对象
Node my_node = nl.item(0);
当一个Node对象被建立之后,保存在XML文档中的数据就被提取出来并封装在这个Node中了。在这个例子
中,要提取Message标签内的内容,我们通常会使用Node对象的getNodeValue()方法:
String message = my_node.getFirstChild().getNodeValue();
PS:请注意,这里还使用了一个getFirstChild()方法来获得message下面的第一个子Node对象。虽然在message标
签下面除了文本外并没有其它子标签或者属性,但是我们坚持在这里使用getFirseChild()方法,这主要和W3C对
DOM的定义有关。W3C把标签内的文本部分也定义成一个Node,所以先要得到代表文本的那个Node,我们才能够使
用getNodeValue()来获取文本的内容。现在,既然我们已经能够从XML文件中提取出数据了,我们就可以把这些
数据用在合适的地方,来构筑应用程序
发表评论
-
WebView加载网页进度条显示
2012-03-06 19:52 2250重写WebChromeClient一个方法进行进度条显示: ... -
基于UDP协议的数据交互例子
2011-12-18 11:06 1642直接贴上代码: 客户端: package com.exam ... -
一种更灵活的数据传输方式:HTTP(2)
2011-12-16 11:18 2908HTTP是大多数应用程序中常用的与服务端交互的通讯方式 ... -
一种更灵活的数据传输方式:HTTP(1)
2011-12-16 10:52 1883使用WebService虽然 ... -
重用WebView的cache图片文件
2011-09-15 15:06 1951如何从WebView使用的cache文件夹中重复使用一些图片资 ... -
开,关闭GPRS的简单Demo
2011-06-09 10:54 2689Android应用中开,关闭GPRS的简单Demo,可能在有的 ... -
Intent打开各种类型文件
2011-04-10 18:22 4378//android获取一个用于打开PPT文件的intent ... -
图片Url保存为位图并进行缩放操作
2010-10-12 15:33 13091.通过传入图片url获取位图方法: public Bit ... -
判断手机有无网络
2010-09-15 16:18 2791ConnectivityManager cwjManage ... -
GoogleMap(通过输入地址,查询显示在google 地图上)
2010-08-15 10:18 4599主Activity: package net.blogja ... -
Android手机使用中国电信天翼上网设置
2010-08-07 16:01 3788众所周知Android手机的上网功能需要用到APN(网络接入点 ... -
GPS取得卫星个数
2010-08-07 15:09 2892LocationManager manager = (Lo ... -
连接服务器超时的Demo
2010-08-05 11:49 2377下面这个例子是连接网络超时的例子: package cn. ... -
下载网络文件到SD卡上
2010-08-02 19:07 3314下面一个一个类的来进行介绍: 1.DownLoadProgre ... -
下载网路图片到SD卡上新建文件夹当中
2010-07-27 22:52 31481.DownloadImages.java文件 packa ... -
sax方式解析xml文件(asset文件和网络文件)
2010-07-11 17:16 1928现在写了些博客后,变懒 ... -
xml中DOM对象的学习
2010-07-03 13:57 1231DOM的基本对象有5个:Doc ... -
DOM方式解析xml文件2(解析本地xml)
2010-07-01 20:42 1545这个与1的方法唯一不同的就是传递InputSource的参数: ... -
DOM方式解析xml文件1(解析网路xml)
2010-07-01 20:14 1537其实网上很多资料讲关 ... -
下载显示网路图片的例子
2010-07-01 10:46 1447一个很简单的例子,直接上代码: 1. ShowUrlImage ...
相关推荐
Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
提供了android中使用dom、pull、sax三种方式进行xml解析,xml文件放置在assets文件夹下,view绑定使用butterknife
本文实例讲述了Android中DOM解析xml文件的方法。分享给大家供大家参考,具体如下: 一、在assets文件中写xml文件 <?xml version=1.0 encoding=UTF-8?> 李明 <age>30 李向梅 <age>25 二、在...
本篇文章包含以下内容: ...DOM解析XML文件时,会将XML文件的所有内容读取到内存中(内存的消耗比较大),然后允许您使用DOM API遍历XML树、检索所需的数据 一、在Assets文件夹中模拟创建XML文件 <name
Android 中通过三种方式XML DOM、PULL、SAX对assets中的XML文件进行解析。 具体的XML相关知识可以了解此文章:https://editor.csdn.net/md?articleId=106274240
文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台...
文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台...
文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发...
文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发...
// loads from TcpSource saved as "tcp"支持的格式包括:JSON (org.magnos.asset.json.JsonValue)XML (org.w3c.dom.Document)PROPERTIES/XML/CONFIG (java.util.Properties, org.magnos.asset.props.Config...
诸如node-fetch和xmldom类的Polyfill可能会派上用场。 预加载项目并检索它们 import AsyncPreloader from "async-preloader" ;const items = [ { id : "myDefaultFile" , src : "assets/default" } , { id : "my
附件为链接文件 Gamebryo.3.0 LightSpeed 详情请自行搜索,该资源 来源于互联网。 安装后目录,大小为10G左右 ├─Build │ ├─CoreRuntime │ │ └─Win32 │ │ ├─VC80 │ │ │ └─Property Sheets │ │ └...