`

使用原始的XML文件

阅读更多
应用场景

在Android应用开发过程中,有时候我们自己有一些XML文件是我们自己手动创建的,而在项目开发过程中可能会用到,也就是说这用到了原始的XML资源文件。这个XML原始资源文件我们可以通过Resouce类的以下两个方法来获得:

getResouce.getXml(int id);

getRawResouce(int id)

这两个方法返回的对象是一个XmlResouceParser类的对象。而XmlResouceParser类是XmlPullParser类的子类,所以我们可以Android内置的Pull模式解析我们的XML文件,这也是本人比较喜欢的一种解析XML文件方式。因为它相对于DOM解析具有占有内存小,解析快,相对于SAX来说编写代码不那么复杂,只要编写那么一点代码就可以完成对XML文件的解析。

关于PULL模式解析XML文件,可以参看我之前写的一篇文章:

Android平台下的XML文件解析之PULL模式解析 .

http://blog.csdn.net/jiahui524/article/details/6955196

实例 :使用原始XML文件

实现过程:

1、在res/下新建一个xml的文件夹,在这个文件夹下新建一个person.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person id="1">
		<name>张三</name>
		<age>20</age>
	</person>
	<person id="2">
		<name>李四</name>
		<age>22</age>
	</person>
</persons>


2、编写布局文件: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" >
    <Button
        android:id="@+id/btnParser"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="解析原始XML资源文件" />
    <EditText
        android:id="@+id/edtContent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:lines="5" />
</LinearLayout>


3、编写Activity的代码
package com.jiahui.xmlres;

import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class XmlResTestActivity extends Activity {

	private Button btnParser;
	private EditText edtContent;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btnParser = (Button) this.findViewById(R.id.btnParser);
		edtContent = (EditText) this.findViewById(R.id.edtContent);
		
		btnParser.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// 获取res/xml下的原生XML文件
				XmlResourceParser parser = getResources().getXml(R.xml.persons);
				try {

					StringBuilder sb = new StringBuilder();
					int eventType = parser.getEventType();
					while (eventType != XmlResourceParser.END_DOCUMENT) {

						switch (eventType) {
						case XmlResourceParser.START_TAG:

							String tagName = parser.getName();

							if (("person").equals(tagName)) {

								// 得到第一个属性
								String personid = parser.getAttributeValue(0);
								sb.append("ID:" + personid);

							} else if ("name".equals(parser.getName())) {
								String name = parser.nextText();
								sb.append("姓名:" + name);

							} else if ("age".equals(parser.getName())) {
								String age = parser.nextText();
								sb.append("年龄:" + age);
							}
							break;
						case XmlResourceParser.END_TAG:
							// 结束时加一个空行
							if ("person".equals(parser.getName())) {
								sb.append("\n");
							}
							break;
						default:
							break;
						}
						// 解析下一个事件
						eventType = parser.next();
					}
					// 将解析的结果放在文本编辑框
					edtContent.setText(sb.toString());

				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		});
	}
}
分享到:
评论

相关推荐

    生成XML文件ABAP程序

    以上步骤展示了如何使用ABAP中的IXML库来创建一个XML文件。通过创建IXML工厂、构建DOM对象模型、设置属性和值、渲染以及保存文档,最终实现了生成并保存XML文件的目标。这种方法不仅适用于简单的XML文档,也可以扩展...

    c#中对xml文件加密和解密完整代码

    - 最后,使用`EncryptedXml.ReplaceData()`方法将原始XML数据替换为加密后的数据,并保存为新的XML文件。 2. **解密XML文件**: - 加载已加密的XML文件,使用`XDocument.Load()`或` XmlDocument.Load()`方法。 -...

    Java读取xml文件的四种方法.doc

    在本例中,我们使用 `DocumentBuilderFactory` 创建一个 `DocumentBuilder` 对象,然后使用 `DocumentBuilder` 对象解析 XML 文件,最后获取文档的根元素,并遍历元素来访问 XML 文档的各个元素。 代码中,我们使用...

    如何使用XML文件读写图像

    首先解析XML文件,然后解码Base64字符串回原始的二进制数据,并保存为图像文件: ```csharp // 解析XML文件 xmlDoc.Load("image_data.xml"); // 获取图像元素 XmlElement imageElement = xmlDoc.SelectSingleNode...

    反编译XML文件

    3. **解密数据**:如果XML文件被加密,可能需要使用特定的解密算法来恢复原始内容。 4. **查看和分析**:使用JD-GUI或其他反编译结果查看器来浏览和理解生成的Java源代码和解密后的XML文件。 反编译XML文件对于...

    matlab快速处理xml文件

    本篇文章将详细探讨如何使用MATLAB来快速有效地处理XML文件。 首先,我们来看读取XML文件。MATLAB中的`xmlread`函数是用于读取XML文件的主要工具。例如,如果你有一个名为`data.xml`的文件,你可以这样读取它: ``...

    C# 在HTML页面中使用XML文件

    我们可以使用`Load`方法加载本地或网络上的XML文件。 - **解析XML**:`XmlNode`和`XElement`对象可用于遍历XML树,提取所需信息。例如,使用`SelectNodes`或`Descendants`方法找到特定元素,`InnerText`或`Value`...

    App.config加密解密 Xml文档加密解密

    - 创建一个新的XML文档对象或加载现有的XML文件。 - 选择要加密的部分,创建`EncryptedData`元素。 - 使用`EncryptedXml`类的`Encrypt()`方法进行加密。 - 将加密后的XML替换原始内容,保存文件。 4. XML文档...

    XML文件转成TXT文件

    1. 加载XML文件:使用`XmlDocument`类加载XML文件,如`XmlDocument doc = new XmlDocument(); doc.Load("input.xml");` 2. 遍历XML文档:通过`XmlNodeList`获取所有元素节点,可以使用`doc.GetElementsByTagName("*...

    图片保存进XML文件的方法

    1. **解析XML文件**:使用XML处理库读取XML文件内容,并解析出包含Base64编码的图片数据的元素。 2. **Base64解码**:将Base64字符串解码回原始的二进制数据。 3. **写入图片**:使用图像处理库将解码后的二进制数据...

    Java格式化Xml文件

    然而,原始的XML文件往往没有缩进和换行,这使得阅读和调试变得困难。因此,Java中提供了一些工具和方法来格式化XML文件,使其更易于理解和处理。本文将深入探讨如何使用Java来格式化XML文件。 首先,我们需要了解...

    C# 对XML文件进加密与解密

    2. **XML文件读取**: 使用`System.IO.File.ReadAllText()`或`XDocument.Load()`方法读取XML文件内容到内存。 3. **加密XML文档**: 创建一个`XmlDocument`对象,将读取的XML内容加载进去。然后,使用`Xml Encryption...

    Java实现XML文档到word文档转换

    Java实现XML文档到Word文档的转换是一项实用的技术,尤其是在需要保持原始文档样式的情况下。通过合理设计XML文档结构、有效利用DOM4J进行解析以及借助适当的Word文档处理库(如Apache POI),开发者可以轻松实现这...

    android中apk包中的xml文件解密

    4. **反混淆**:如果XML文件经过混淆,如改变元素和属性名称,可能需要使用专门的反混淆工具,如`dex2jar`和`JD-GUI`,来恢复原始的代码结构。 5. **理解安全问题**:解密XML文件主要是为了调试或学习,但请注意这...

    VC.net 使用XML文件读写图像

    1. **解析XML文件**:可以使用MSXML库(Microsoft XML Core Services)或者Windows SDK中的IXMLDOMDocument接口来解析XML文件。首先,创建一个IXMLDOMDocument对象,然后加载XML文件。例如: ```cpp CoInitialize...

    Java中写xml文件

    Java 中编写XML文件涉及到的主要技术是Java API for XML Processing(JAXP),这是一个用于XML文档处理的Java编程接口。JAXP提供了对DOM(Document Object Model)、SAX(Simple API for XML)和XSLT(Extensible ...

    Word文档转xml

    当我们打开一个.docx文件,可以看到一系列的XML文件,如document.xml、styles.xml等,它们定义了文档的结构和样式。 要将Word文档转换为XML,我们需要遵循以下步骤: 1. **读取Word文档**:在Android中,可以使用...

    TinyXML解析xml文档

    1. TiXmlBase:所有TinyXML类的基类,包含结点或属性在原始XML文档中的位置信息。 2. TiXmlAttribute:用于表示XML元素的属性,每个属性都是一个键值对。 3. TiXmlNode:XML结点的基类,提供对XML文档树结构的操作和...

    Unity 在StreamingAssets路径下加载Xml文件

    在Unity游戏开发中,使用XML文件作为数据存储和配置是很常见的做法。XML文件因其结构清晰、易于读写和跨平台的特性,深受开发者喜爱。本文将深入探讨如何在Unity的StreamingAssets路径下加载XML文件,并解决不同平台...

    XMLDemo原始的xml实现效果

    在XMLDemo的压缩包中,可能包含XML文件、解析和操作XML的代码示例,以及可能的验证规则和转换样式表。通过分析这些内容,我们可以深入理解XML在实际应用中的工作原理和效果。对于初学者来说,这样的示例是学习XML...

Global site tag (gtag.js) - Google Analytics