DOM解析XML
DOM是Document Object Model的缩写,即文档对象模型.DOM解析器是通过将XML文档解析成树状模型并将其放入内存来完成解析工作的,而后对文档的操作都是在这个树状模型上完成.这个在内存中的文档是实际文档大小的几倍.好处是结构清晰,操作方便,坏处是耗费系统资源.要使用DOM方式来解析xml,需引入下面两个包:
importjavax.xml.parsers.*;//包含DOM解析器和SAX解析器的具体实现
import org.w3c.dom.*;//定义了W3C制定的DOM接口
具体思路:
*首先创建一个DocumentBuilderFactory实例,
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
*利用DocumentBuilderFactory实例创建DocumentBuilder,
DocumentBuilder builder = factory.newDocumentBuilder();
*然后加载xml文档(Document),
Document doc = builder.parse(getAssets().open("xml/student.xml"));
*然后获取文档的根节点(Element),
Element root = doc.getDocumentElement();
*然后获取根节点中所有子节点的列表(NodeList),
NodeListnodeList = root.getElementsByTagName("student");
*然后再获取子节点列表中需获取的节点.
**************************************相关代码*****************
//student是一个实体类,里面有name,age参数,构造方法,和getter and setter方法,tostring输出;
public class DomParserActivity extends Activity {
private TextView mtextview;
private ListView mlistview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.domparser);
mtextview = (TextView) findViewById(R.id.textView1);
mlistview = (ListView) findViewById(R.id.listView1);
mtextview.setText("dom解析xml");
List<Student> list = parserxml();
ArrayAdapter< Student> adapter = new ArrayAdapter<Student>(this,android.R.layout.simple_expandable_list_item_1,list);
mlistview.setAdapter(adapter);
}
private List<Student> parserxml() {
List<Student> list = new ArrayList<Student>();
try {
//获取工厂实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//获取解析器实例
DocumentBuilder db;
db = dbf.newDocumentBuilder();
//// 用解析器解析Xml, 放于src下面
Document doc = db.parse(DomParserActivity.this.getClassLoader().getResourceAsStream("student.xml"));
//获取Document根节点
Element ele = doc.getDocumentElement();
//拿到某个标签的节点列表
NodeList nodelist = ele.getElementsByTagName("student");
int length = nodelist.getLength();
Student stu = null;
//遍历节点列表
for(int i=0;i<length;i++){
stu = new Student();
Element stuele = (Element) nodelist.item(i);
stu.setId(Integer.parseInt(stuele.getAttribute("id")));
//拿到<student>标签的子节点列表
NodeList childlist = stuele.getChildNodes();
int childlength = childlist.getLength();
//遍历子节点列表
for(int j=0;j<childlength;j++){
Node node = childlist.item(j);
if(node.getNodeType()==Node.ELEMENT_NODE){
Element element = (Element) node;
if("name".equals(element.getNodeName())){
stu.setName(element.getFirstChild().getNodeValue());
Log.i("TAG", ""+stu.getName());
}
else if("age".equals(element.getNodeName())){
stu.setAge(Integer.valueOf(element.getAttribute("value")));
}
}
}
list.add(stu);
}
}
catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
分享到:
相关推荐
本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...
DOM解析器将整个XML文件加载到内存中,构建一个树形结构,可以方便地通过节点操作访问XML数据。优点是操作灵活,适合小到中等大小的XML文档;缺点是如果XML文件过大,可能导致内存消耗过高。 3. **Pull解析器** ...
下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...
首先,我们需要理解DOM解析的基本原理。DOM解析器会将整个XML文件加载到内存中,形成一个节点树。这棵树的根节点代表整个XML文档,而其他节点则表示文档中的元素、属性、文本等内容。这种解析方式的优点是能够快速...
通过实践这个示例,你可以更直观地理解DOM解析的工作流程,并能更好地应用到自己的项目中。 需要注意的是,DOM解析虽然方便,但它的主要缺点是消耗资源较大,尤其是对于大型XML文件,因为它需要一次性加载整个文档...
在Android开发中,DOM解析是一种常见的XML处理方法,用于读取、操作和理解XML文档的结构。DOM(Document Object Model)是一种与平台和语言无关的标准,它将XML文档表示为一个树形结构,使得开发者可以方便地访问和...
首先,理解DOM解析的基本概念至关重要。DOM是一种标准,允许程序以树形结构访问和操作XML文档的全部内容。它将整个XML文件加载到内存中,形成一个完整的节点树,从而可以方便地遍历和修改XML文档的任何部分。在...
在Android开发中,XML(eXtensible Markup Language)是一种常用的...理解并熟练掌握DOM解析是Android开发中的重要技能,它可以帮助开发者更方便地处理XML数据,但在处理大型XML文件时应考虑其他解析策略以提高效率。
**正文** XML(eXtensible Markup Language)...通过理解DOM解析的基本步骤和注意事项,开发者可以有效地读取、解析并利用XML文件中的信息。在实际项目中,根据具体需求和文件大小,选择合适的解析方式是非常重要的。
DOM解析会将整个XML文档加载到内存中,构建一个树形结构,每个节点代表XML文档的一部分。开发者可以遍历这棵树来访问和修改数据。这种方式对于小到中等大小的XML文件较为适用。 - **优点**:提供整个XML结构的...
DOM解析器将整个XML文档加载到内存中,形成一棵树形结构,称为DOM树。开发者可以遍历这棵树来访问和修改XML数据。尽管DOM解析提供了灵活的数据访问,但不适用于大文件,因为会消耗大量内存。在person类的例子中,...
本文将深入探讨Android中XML的处理,主要关注DOM4J库和DOM解析方式。 首先,我们来了解XML的基本概念。XML是一种自描述性的、结构化的文本格式,它的设计目标是简化数据的共享和交换。XML文档由元素、属性、注释、...
本篇将详细讲解Android中三种主要的XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和Pull解析器,并通过案例来帮助理解它们的工作原理和应用场景。 ### 1. SAX解析器 SAX(Simple API for...
Android SDK提供了`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类来实现DOM解析。首先创建`DocumentBuilderFactory`实例,然后使用`newDocumentBuilder()`方法生成`DocumentBuilder`,最后...
通过DOM解析,开发者可以轻松地遍历整个XML文档,访问任何节点并修改它们。然而,由于DOM将整个XML文档加载到内存,对于大文件,这可能导致性能问题和内存消耗。 其次,SAX(Simple API for XML)是一种基于事件的...
本文将深入探讨两种主要的XML解析方法:PULL解析和DOM解析。 一、PULL解析XML PULL解析(Pull Parsing)是一种事件驱动的解析方式,它允许程序在解析过程中主动控制解析流程。PULL解析器不会一次性加载整个XML文档...
在Android中,可以使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类来实现DOM解析。 其次,Pull解析器是一种事件驱动的解析方式,它不将整个文件加载到内存,而是按需读取XML数据。这种...
在Android中,我们可以使用Jsoup库来实现DOM解析。Jsoup提供了一套方便的API,可以轻松地找到HTML元素、提取文本、属性值等。例如,要获取网页的标题,可以使用`doc.title()`;要获取所有段落,可以使用`doc.select...
DOM解析器适合处理小型或中型XML文件,因为它将整个文档加载到内存中,对于大文件可能会导致内存消耗过大。DOM的优点在于提供了一种直观的方式来操作XML,但缺点是其内存开销和性能影响。 下面分别介绍这三个解析...
DOM解析器将整个XML文档加载到内存中,构建一个树形结构的文档对象模型,允许开发者通过遍历节点来访问和操作XML数据。DOM解析的优点在于方便,可以任意位置修改XML,并且可以随机访问任何部分。然而,对于大文件,...