android采用DOM解析xml文档

本文介绍如何使用DOM技术在Android环境中解析XML文档。通过构建文档树并遍历节点,实现对XML数据的有效读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里介绍一下在android中使用DOM解析技术来解析xml文档,同样首先我们要认识到DOM解析xml的原理:DOM解析主要是先把整个xml文档加载到内存中去让后有android系统来完成对文档加载成文档树的形式储存在内存中然后我们通过android的API来解析整个文档树 ,废话不多说就开始吧!

首先person.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>

 

下面就来看看具体的解析代码:

public class DOMParsseService {

private List<Person> personLs=null;

public List<Person> readXMLDOM(InputStream inputStream)
{
DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder=documentBuilderFactory.newDocumentBuilder();
//开始加载整个文档到内存中形成文档树
Document document=builder.parse(inputStream);
//得到根元素
Element root=document.getDocumentElement();
//得到根元素的子元素集合
NodeList nodeList=root.getElementsByTagName("person");
personLs=new ArrayList<Person>();

for(int i=0;i<nodeList.getLength();i++)
{
Person person=new Person();
Element childElement=(Element)nodeList.item(i);
person.setId(new Integer(childElement.getAttribute("id")));
NodeList childNodeList=childElement.getChildNodes();
for(int j=0;j<childNodeList.getLength();j++)
{//判断是否为元素类型
Node node =childNodeList.item(j);
if(node.getNodeType()==Node.ELEMENT_NODE)
{
Element childNode = (Element) node;
//判断是否name元素
if("name".equals(childNode.getNodeName()))
{
//获取name元素下Text节点,然后从Text节点获取数据
person.setName(childNode.getFirstChild().getNodeValue());
}else if("age".equals(childNode.getNodeName()))
{
person.setAge(new Integer(childNode.getFirstChild().getNodeValue()).intValue());
}
}
}
personLs.add(person);
}
inputStream.close();
} catch (Exception e) {

e.printStackTrace();
}
return personLs;
}
}

单元测试方法

public void testreadXMLDOM() throws Throwable{
DOMParsseService service = new DOMParsseService();
InputStream inStream = getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons = service.readXMLDOM(inStream);
for(Person person : persons){
Log.i(TAG, person.toString());
}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青年IT男

您的打赏就是对我的肯定!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值