Android演示使用DOM解析xml文件
2011-09-19 15:14
399 查看
Android下解析xml文件的三种方式分别是:SAX、DOM、PULL,本次主要讲解如何使用DOM方式:
这里使用的测试xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<ProjectSettings>
<CurrentProject>0</CurrentProject>
<Project>
<Name>FreeDemo</Name>
<RunningMode>1</RunningMode>
</Project>
</ProjectSettings>
解析代码如下:
分析整个解析过程,主要有如下思路:
通过DocumentBuilderFactory.newInstance()创建工厂;
通过工厂创建DocumentBuilder;
通过builder.parse得到一个Document对象,此时将文件加载到了内存中;
通过document.getDocumentElement()得到整个文档的root节点;
通过root.getElementsByTagName可以得到整个root的子节点;
子节点再查找孙子节点可以使用getChildNodes方法;
可以通过getNodeName().equals对比属性名称;
可以通过NodeList.item(i).getFirstChild().getNodeValue()得到属性值;
这里使用的测试xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<ProjectSettings>
<CurrentProject>0</CurrentProject>
<Project>
<Name>FreeDemo</Name>
<RunningMode>1</RunningMode>
</Project>
</ProjectSettings>
解析代码如下:
package com.freesoft.utility.logger; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import com.freesoft.utility.IntWrapper; import com.freesoft.utility.settings.ProjectSetting; /** * @author wangshaozhuang * */ public class DOMConfigGetter { /** * @param is * 输入流 * @return 项目设置 */ public static ProjectSetting getConfig(InputStream is) { ProjectSetting currentSetting = new ProjectSetting(); int currentProjectIndex = 0; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(is); Element root = document.getDocumentElement(); NodeList currentProjectNodeList = root.getElementsByTagName(ProjectSetting.CURRENTPROJECT_NAME); if (currentProjectNodeList.getLength() != 1) throw new ArrayIndexOutOfBoundsException(); else currentProjectIndex = IntWrapper.wrap(currentProjectNodeList.item(0).getFirstChild().getNodeValue(), 0); NodeList projectsNodeList = root.getElementsByTagName(ProjectSetting.PROJECT_NAME); Node currentProjectNode = projectsNodeList.item(currentProjectIndex); NodeList currentProjectSettingsNodeList = currentProjectNode.getChildNodes(); for (int i = 0; i < currentProjectSettingsNodeList.getLength(); i++ ) { if (currentProjectSettingsNodeList.item(i).getNodeName().equals(ProjectSetting.RUNNINGMODE_NAME)) { String value = currentProjectSettingsNodeList.item(i).getFirstChild().getNodeValue(); currentSetting.setRunningMode(IntWrapper.wrap(value, ProjectSetting.INVALID_MODE)); } else if (currentProjectSettingsNodeList.item(i).getNodeName().equals(ProjectSetting.NAME_NAME)) { String value = currentProjectSettingsNodeList.item(i).getFirstChild().getNodeValue(); currentSetting.setName(value); } } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return currentSetting; } }
分析整个解析过程,主要有如下思路:
通过DocumentBuilderFactory.newInstance()创建工厂;
通过工厂创建DocumentBuilder;
通过builder.parse得到一个Document对象,此时将文件加载到了内存中;
通过document.getDocumentElement()得到整个文档的root节点;
通过root.getElementsByTagName可以得到整个root的子节点;
子节点再查找孙子节点可以使用getChildNodes方法;
可以通过getNodeName().equals对比属性名称;
可以通过NodeList.item(i).getFirstChild().getNodeValue()得到属性值;
相关文章推荐
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- android如何使用DOM和SAXParserFactory来解析XML文件
- Android使用Dom解析xml文件并进行展示
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android开发使用Dom从网络端解析xml文件
- Android学习笔记---Android平台1.使用dom解析xml文件
- Android演示使用PULL方式解析XML文件
- android应用开发之利用SAX、DOM和Pull实现对XML文件的解析并进行单元测试
- Android -使用DOM(文档对象模型)解析XML文件
- Android异步下载网络图片&android解析xml文件的方式&使用Adapter为ListView提供数据
- Android中使用Pull解析器解析XML文件简介
- Android中的XML解析-DOM的使用与开发技巧(转)
- Android下Xml解析技术(二)、DOM解析Xml文件
- Android使用Pull解析方式解析xml文件
- RSS阅读器(使用android解析技术解析xml文件并以列表的形式显示出来)
- Android中使用Pull解析器解析xml文件+进行简单的单元测试
- Android成长之路-使用DOM解析XML
- Android使用pull解析器解析xml文件
- 详解Android之解析XML文件三种方式(DOM,PULL,SAX)
- Android中Sax解析与Dom解析xml文件