XmlResourceParser解析XML文件

官方文档:

The XML parsing interface returned for an XML resource. This is a standard XmlPullParser interface, as well as an extended AttributeSet interface and an additional close() method on this interface for the client to indicate when it is done reading the resource.


解释:

XmlResourceParser是一个接口类,继承XmlPullParser和AttributeSet。它返回一个xml资源文件。这样说并不准确,应该是通过它可以访问xml中的资源。当结束使用后,可以调用其close方法。源码如下:

/**
 * The XML parsing interface returned for an XML resource.  This is a standard
 * XmlPullParser interface, as well as an extended AttributeSet interface and
 * an additional close() method on this interface for the client to indicate
 * when it is done reading the resource.
 */
public interface XmlResourceParser extends XmlPullParser, AttributeSet {
    /**
     * Close this interface to the resource.  Calls on the interface are no
     * longer value after this call.
     */
    public void close();
}

还有两个比较重要的标签:都是通过getEventType方法返回的。

START_TAG:开始读取xml文件的标签。

END_DOCUMENT:xml文件的结尾标签。如果getEventType()的结果是它,就说明读取完毕。


一样,拿一个例子说明:

1.创建一个xml文件(books.xml),用来解析:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<book price="20" date="2012.12.12">android</book>
	<book price="20" date="2011.11.11">java</book>
	<book price="20" date="2010.10.10">c/c++</book>
</resources>

布局文件main.xml中,包含一个Button和TextView,Button用来执行解析xml操作,TextView显示解析结果,即books.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/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="解析xml文件" />

    <TextView
        android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

主Activity代码:

package com.cb.parsexml;

import java.io.IOException;

import org.crazyit.image.R;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ParseXml extends Activity {
	private TextView mTextView;
	private Button mParseXmlBtn;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		setContentView(R.layout.main);
		super.onCreate(savedInstanceState);

		mTextView = (TextView) findViewById(R.id.tv);
		mParseXmlBtn = (Button) findViewById(R.id.btn);
		mParseXmlBtn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				//根据指定的xml文件,返回XmlResourceParser。通过它,可以访问对应的xml文件中的数据
				XmlResourceParser xrp = getResources().getXml(R.xml.books);
				try {
					//StringBuilder对象用来储存获取的xml信息
					StringBuilder sb = new StringBuilder("");
					while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) { //是否读取到文件尾
						if (xrp.getEventType() == XmlResourceParser.START_TAG) { //是否是开始读取的标签
							//获取标签名称
							String tagName = xrp.getName();
							Log.i("cb", "tagName is " + tagName);
							if (tagName.equals("book")) {
								//获取属性值
								String bookPrice = xrp.getAttributeValue(null, "price");
								sb.append("价格:" + bookPrice + ",");
								String bookDate = xrp.getAttributeValue(null, "date");
								sb.append("日期:" + bookDate + ",");
								String bookName = xrp.nextText();
								sb.append("书名:" + bookName);
							}
							sb.append("\n");
						}
						//下一条记录
						xrp.next();
					}
					mTextView.setText(sb.toString());

				} catch (XmlPullParserException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				} 
			}
		});

	}
}

点击按钮后,效果如图:





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
minidom是Python中用于解析XML文件的内置模块之一。它提供了一种简单而方便的方式来处理XML数据。 要使用minidom解析XML文件,首先需要导入minidom模块: ```python from xml.dom import minidom ``` 然后,可以使用minidom模块的`parse()`函数来解析XML文件。例如,如果要解析名为"example.xml"的XML文件,可以使用以下代码: ```python dom = minidom.parse("example.xml") ``` 解析完成后,可以通过`dom`对象来访问XML文件的内容。下面是一些常用的方法和属性: - `getElementsByTagName(tagname)`:根据标签名获取元素列表。 -getAttribute(attrname)`:获取元素的属性值。 - `childNodes:获取元素的子节点列表。 - `data`:获取文本节点的文本内容。 以下是一个简单的示例,演示了如何使用minidom解析XML文件并获取其中的数据: ```python from xml.dom import minidom # 解析XML文件 dom = minidom.parse("example.xml") # 获取根元素 root = dom.documentElement # 获取所有book元素 books = root.getElementsByTagName("book") # 遍历book元素并获取数据 for book in books: title = book.getAttribute("title") author = book.getElementsByTagName("author")[0].childNodes[0].data price = book.getElementsByTagName("price")[0].childNodes[0].data print("Title: ", title) print("Author: ", author) print("Price: ", price) print() ``` 上述示例假设XML文件的结构如下: ```xml <library> <book title="Book 1"> <author>Author 1</author> <price>10.99</price> </book> <book title="Book 2"> <author>Author 2</author> <price>15.99</price> </book> </library> ``` 通过上述代码,我们可以获取每本书的标题、作者和价格,并将其打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值