首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

android采取DOM解析xml文档

2012-07-24 
android采用DOM解析xml文档在这里介绍一下在android中使用DOM解析技术来解析xml文档,同样首先我们要认识到

android采用DOM解析xml文档

在这里介绍一下在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());
}
}

?

?

热点排行