- 浏览: 220998 次
文章分类
最新评论
-
lmjmn456:
为什么我的TestHall里面看不到RomeA RomeB R ...
Android 通过反射启动未安装的APK中的Activity -
wangleyiang:
uyerp 写道这样的话,只能将插件的元素显示到Hall中。有 ...
Android 通过反射启动未安装的APK中的Activity -
uyerp:
这样的话,只能将插件的元素显示到Hall中。有什么办法能在不安 ...
Android 通过反射启动未安装的APK中的Activity -
wangleyiang:
提高文学修养 写道不好意思,有时间尝试一下,谢谢!有问题提出来 ...
Android 主题之主题文件夹 -
提高文学修养:
不好意思,有时间尝试一下,谢谢!
Android 主题之主题文件夹
下面简单的说明使用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>
发表评论
-
避免OOM的一种方式
2014-03-11 09:30 871从网上看到一个避免OOM的方式,创建图片时,使用decod ... -
锁屏操作
2013-11-01 11:29 952从API Level 8开始,添加了一个新的类Device ... -
让Surface中绘制的内容响应用户的交互(状态变化)
2013-10-28 16:54 893被绘制的内容响应用户的交互,简单的看就是绘制内容的状态在用 ... -
在自定义的SurfaceView中绘制内容
2013-10-28 16:53 2861View和SurfaceView都可以用于绘制图形,但各有 ... -
在自定义的View中绘制内容
2013-10-28 10:52 945程序开发中,常常需要完成某一个特殊效果而绘制一些内容。 ... -
获取Bitmap大小
2013-10-08 17:59 1012Bitmap的操作常常会导致OOM(内存溢出)。 在处理B ... -
隐藏键盘的一种处理方法
2013-10-08 15:18 668通过调用系统服务来隐藏键盘的一种处理方法: // 获 ... -
通过系统调用裁剪图片
2013-10-08 15:05 1054分享一个Android源码查看网页:http://andr ... -
拍照,相册获取图片,系统裁剪图片
2013-09-30 12:41 1604获取相册图片的一种写法: Intent intent = ... -
转-Android开发环境搭建篇详尽的教程实例汇
2013-09-27 13:50 754原文:http://wiki.eoe.cn/page/An ... -
一种更改包名的方式-Linux命令
2013-09-27 09:54 1141在Android应用程序中更改包名,可以从文件的角度来解决 ... -
Android 通过反射启动未安装的APK中的Activity
2013-02-05 16:32 8875JAVA反射机制是在运行状态中,对于任意一个类,都能够知道 ... -
Android 判断程序是否是系统程序
2013-02-04 14:12 1657获得Android手机中安装程序是否是系统程序,比较好的方式 ... -
Android R
2013-02-01 16:18 1249import java.lang.reflect.Fiel ... -
Android 主题之主题文件夹
2013-02-01 14:22 1710从文件夹中获得主题资源,然后在程序中做相关调整,下面看一个 ... -
Android 主题之安装的APK主题文件
2013-01-31 17:25 1843Android中应用主题设置 ... -
『转』Android Intent常见应用
2013-01-30 16:46 1363转自:http://blog.csdn.net/spy19 ... -
Android px sp dip转化
2013-01-30 12:53 978一个关于px, sp, dip转化的代码: public ... -
Android 布局
2013-01-30 11:19 1318对Android提供的基本布局控件进行组合,可以实现一些相 ... -
Android 添加动画的标签栏
2013-01-29 23:10 1113运行效果图: 实现原理:标签布局好了以后,标签所在V ...
相关推荐
总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...
本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...
下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...
本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...
在Android开发中,XML文件常用于存储数据、配置文件或者作为接口返回的数据格式。本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible ...
综上所述,DOM解析XML是Android开发中处理XML数据的一种常见方法,尤其适用于小规模数据。通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和...
在提供的`DomXmlOperate`示例中,可能包含了如何使用DOM解析XML并绑定到View(如使用ButterKnife库)的代码。 2. PULL解析: PULL解析器是事件驱动的,它以拉取(pull)的方式逐个处理XML元素,不需要一次性加载...
使用DOM解析XML的基本步骤如下: 1. 加载XML文件:使用`DocumentBuilderFactory`创建`DocumentBuilder`,然后调用`parse()`方法加载XML。 2. 构建DOM树:`DocumentBuilder`会将XML转换为`Document`对象。 3. 遍历DOM...
通过DOM解析XML,Android应用能够轻松处理和展示XML数据。虽然DOM方法简单易用,但请注意它会将整个XML文档加载到内存中,对于大型XML文件可能会消耗大量资源。在处理大文件时,可以考虑使用SAX(简单API for XML)...
本文将深入探讨在Android中如何使用DOM方式解析XML。 首先,我们需要理解DOM解析的基本原理。DOM解析器会将整个XML文件加载到内存中,形成一个节点树。这棵树的根节点代表整个XML文档,而其他节点则表示文档中的...
【DOM解析XML】 在Java中,解析XML文档有多种方式,其中DOM(Document Object Model)和SAX(Simple API for XML)是最常见的两种。DOM是一种基于树形结构的XML处理方式,它将整个XML文档加载到内存中,形成一个完整...
在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,形成一个树形结构,然后通过这个结构来访问和操作 XML 的各个部分。 首先,我们需要引入 Java 的核心解析库,即 javax.xml.parsers 命名空间。这个库...
本节将深入探讨Android版本更新的过程以及DOM解析XML的技术。 一、Android版本更新 1. 版本跟进:Android系统经历了从早期的API Level 1到目前的API Level 30等多个版本。每个新版本通常包含对性能、安全性和用户...
在Android平台上,XML数据解析是常见的任务,用于处理如配置文件、网络响应等XML格式的数据。"Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的...
android 使用dom解析全世界地区城市xml文件并存入数据库
二、DOM解析XML文件 DOM(Document Object Model)将整个XML文档加载到内存中,形成一棵树形结构,方便遍历和操作。对于小规模的XML文件,DOM解析器是一个不错的选择。Java和Kotlin的DOM解析步骤如下: 1. 加载XML...
DOM解析器将整个XML文件加载到内存中,构建一个树形结构,可以方便地通过节点操作访问XML数据。优点是操作灵活,适合小到中等大小的XML文档;缺点是如果XML文件过大,可能导致内存消耗过高。 3. **Pull解析器** ...
DOM解析器适合处理小型或中型XML文件,因为它将整个文档加载到内存中,对于大文件可能会导致内存消耗过大。DOM的优点在于提供了一种直观的方式来操作XML,但缺点是其内存开销和性能影响。 下面分别介绍这三个解析...
以下是关于Android中DOM解析XML的详细知识讲解。 1. **DOM解析器简介** DOM解析器是XML解析的一种方法,它将整个XML文档加载到内存中的一个对象模型,这个模型称为DOM树。开发者可以遍历这个树来访问或修改XML文件...
DOM解析XML文件的基本步骤如下: 1. 引入必要的库:在Android项目中,我们需要引入`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`库,这些库提供了解析XML的工具。 2. 创建...