DOM方式解析xml文件2(解析本地xml)

这个与1的方法唯一不同的就是传递InputSource的参数:
上代码:
1.DomParseXml.java

package cn.com;

import java.io.File;
import java.io.StringReader;

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;
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);

et = (EditText) findViewById(R.id.et);

}

@Override
public void onClick(View agr0) {

String[] data = null;
Node nRoot = root("root").item(0);
// 获得孩子结点
NodeList child = nRoot.getChildNodes();
// 获得子节点的个数
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("id")
.getNodeValue();
System.out.println("**********************" + data[i]);

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

private NodeList root(final String str) {

NodeList root = null;

try {

String xml = "<root><demo id='73'><name>MjAxMMrAveexrQ==</name><type>0+nA1g==</type><demoTitle>MjAxMMrAveexrQ==</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0yNSAxNjozMTozOC4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='133' type='jpg' order='1'></pic><pic id='134' type='jpg' order='1'></pic></picRoot><videoRoot></videoRoot></demo><demo id='74'><name>y66yqLutwMg=</name><type>0+nA1g==</type><demoTitle>y66yqLutwMg=</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0yNSAxNjozMToyMy4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='135' type='jpg' order='1'></pic><pic id='136' type='jpg' order='1'></pic></picRoot><videoRoot></videoRoot></demo><demo id='75'><name>t++7y8340MLOxQ==</name><type>0+nA1g==</type><demoTitle>t++7y8340MLOxQ==</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0yNSAxNjozNzowMC4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='137' type='jpg' order='1'></pic><pic id='138' type='jpg' order='1'></pic></picRoot><videoRoot></videoRoot></demo><demo id='76'><name>svrGt8P7s8Y=</name><type>0+nA1g==</type><demoTitle>svrGt7HqzOI=</demoTitle><size>Mjk4MzU3Nw==</size><version>djEuMA==</version><releaseDate>MjAxMC0wNi0zMCAxNTo1MTo0MS4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail>svrGt8/qz7jLtcP3</releaseDetail><picRoot><pic id='139' type='jpg' order='1'></pic><pic id='140' type='jpg' order='1'></pic></picRoot><videoRoot><video id='68' type='flv' order='0'>0d3KvrDmw/uzxg==</video></videoRoot></demo><demo id='77'><name>svrGt8P7s8Y=</name><type>0+nA1g==</type><demoTitle>svrGt7HqzOI=</demoTitle><size></size><version>djEuMA==</version><releaseDate>MjAxMC0wNy0wMSAxMzo0NTo0MS4w</releaseDate><language></language><releaseFunction>uabE3Mu1w/c=</releaseFunction><releaseDetail></releaseDetail><picRoot><pic id='141' type='png' order='1'></pic><pic id='142' type='png' order='1'></pic></picRoot><videoRoot><video id='69' type='flv' order='0'>0d3KvrDmw/uzxg==</video></videoRoot></demo></root>";

// 创建一个新的字符串
StringReader read = new StringReader(xml);

InputSource is = new InputSource(read);

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值