下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中怎么利用DOM解析XML
一.DOM解析方法介绍二、DOM解析步骤DocumentBuilderFactory
factory
=
DocumentBuilderFactory.newInstance();DocumentBuilder
builder
=
factory.newDocumentBuilder();Document
dom
=
builder.parse(inputStream);
Element
root
=
dom.getDocumentElement();
NodeList
items
=
root.getElementsByTagName("person");
(
i
=
0;
i
<
items.getLength();
i++==
(
j
=
0;
j
<
childNodes.getLength();
j++=
(node.getNodeType()
===三、DOM解析XML代码<?xml
version="1.0"
encoding="UTF-8"?><persons>
<person
id="23">
<name>liming</name>
<age>30</age>
</person>
<person
id="20">
<name>lixiangmei</name>
<age>25</age>
</person></persons>
<Button
android:id="@+id/dom_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/fab_margin"
android:gravity="center_horizontal"
android:text="@string/DOM"
/><TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello
World!"
/>package
com.zhangmiao.analyzexmldemo;import
org.w3c.dom.Document;import
org.w3c.dom.Element;import
org.w3c.dom.Node;import
org.w3c.dom.NodeList;import
java.io.InputStream;import
java.util.ArrayList;import
java.util.List;import
javax.xml.parsers.DocumentBuilder;import
javax.xml.parsers.DocumentBuilderFactory;/**
*
Created
by
zhangmiao
on
2016/12/14.
*/public
class
AnalyzeDOM
{
public
static
List<Person>
readXML(InputStream
inputStream)
{
List<Person>
persons
=
new
ArrayList<>();
DocumentBuilderFactory
factory
=
DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder
builder
=
factory.newDocumentBuilder();
Document
dom
=
builder.parse(inputStream);
Element
root
=
dom.getDocumentElement();
NodeList
items
=
root.getElementsByTagName("person");
for
(int
i
=
0;
i
<
items.getLength();
i++)
{
Person
person
=
new
Person();
Element
personNode
=
(Element)
items.item(i);
person.setId(new
Integer(personNode.getAttribute("id")));
NodeList
childNodes
=
personNode.getChildNodes();
for
(int
j
=
0;
j
<
childNodes.getLength();
j++)
{
Node
node
=
childNodes.item(j);
if
(node.getNodeType()
==
Node.ELEMENT_NODE)
{
Element
childNode
=
(Element)
node;
if
("name".equals(childNode.getNodeName()))
{
person.setName(childNode.getFirstChild().getNodeValue());
}
else
if
("age".equals(childNode.getNodeName()))
{
person.setAge(new
Short(childNode.getFirstChild().getNodeValue()));
}
}
}
persons.add(person);
}
inputStream.close();
}
catch
(Exception
e)
{
e.printStackTrace();
}
return
persons;
}
}package
com.zhangmiao.analyzexmldemo;import
android.os.Bundle;import
android.support.design.widget.FloatingActionButton;import
android.support.design.widget.Snackbar;import
android.support.v7.app.AppCompatActivity;import
android.support.v7.widget.Toolbar;import
android.util.Log;import
android.view.View;import
android.view.Menu;import
android.view.MenuItem;import
android.widget.Button;import
android.widget.TextView;import
org.xml.sax.InputSource;import
java.io.BufferedWriter;import
java.io.File;import
java.io.FileOutputStream;import
java.io.InputStream;import
java.io.OutputStreamWriter;import
java.io.StringWriter;import
java.util.List;import
javax.xml.parsers.SAXParser;import
javax.xml.parsers.SAXParserFactory;public
class
MainActivity
extends
AppCompatActivity
implements
View.OnClickListener
{
private
static
final
String
TAG
=
"AnalyzeXMLDemo";
private
TextView
mTextView;
private
InputStream
inputStream;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
Log.v(TAG,
"onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar
toolbar
=
(Toolbar)
findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton
fab
=
(FloatingActionButton)
findViewById(R.id.fab);
fab.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
view)
{
Snackbar.make(view,
"Replace
with
your
own
action",
Snackbar.LENGTH_LONG)
.setAction("Action",
null).show();
}
});
Button
domButton
=
(Button)
findViewById(R.id.dom_button);
mTextView
=
(TextView)
findViewById(R.id.text);
domButton.setOnClickListener(this);
}
@Override
public
void
onClick(View
v)
{
String
result
=
"";
inputStream
=
getResources().openRawResource(R.raw.itcase);
switch
(v.getId())
{case
R.id.dom_button:
result
+=
"
DOM
"
+
"\n";
if
(inputStream
==
null)
{
result
=
"inputStream
is
null";
}
else
{
List<Person>
personList
=
AnalyzeDOM.readXML(inputStream);
if
(personList
!=
null)
{
for
(int
i
=
0;
i
<
personList.size();
i++)
{
String
message
=
"id
=
"
+
personList.get(i).getId()
+
"
,
name
=
"
+
personList.get(i).getName()
+
"
,
age
=
"
+
personList.get(i).getAge()
+
".\n";
result
+=
message;
}
}
}
mTextView.setText(result);
break;default:
break;
}
}
@Override
public
boolean
onCreateOptionsMenu(Menu
m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高科技企业应收账款质押担保合同样本3篇
- 二零二五版高校学术期刊合作承包出版合同3篇
- 2025版卫生院与乡村医生合作协议书3篇
- 二零二五版旅游导购人员派遣合同2篇
- 2025年度跨境电商进口商品质量担保合同4篇
- 二零二五年车抵押贷款提前还款合同模板3篇
- 2025版无人配送机器人运营免责条款合同范本4篇
- 二零二五版企业班车租赁及节能减排服务合同3篇
- 二零二五年度透水混凝土工程市场营销合作协议2篇
- 第一人民医院二零二五年度进修人员医疗质量管理与服务协议3篇
- 第1课 隋朝统一与灭亡 课件(26张)2024-2025学年部编版七年级历史下册
- 2025-2030年中国糖醇市场运行状况及投资前景趋势分析报告
- 冬日暖阳健康守护
- 水处理药剂采购项目技术方案(技术方案)
- 2024级高一上期期中测试数学试题含答案
- 山东省2024-2025学年高三上学期新高考联合质量测评10月联考英语试题
- 不间断电源UPS知识培训
- 三年级除法竖式300道题及答案
- 品学课堂新范式
- GB/T 1196-2023重熔用铝锭
- 幼儿园教师培训:计数(数数)的核心经验
评论
0/150
提交评论