xml解析---DOM
工程结构图:
[img]
[/img]
效果图:
[img]
[/img]
一、stu.xml
<?xml version="1.0" encoding="utf-8"?>
<students>
<student id="1">
<name>tom</name>
<age>20</age>
</student>
<student id="2">
<name>kite</name>
<age>21</age>
</student>
<student id="3">
<name>rose</name>
<age>22</age>
</student>
</students>
布局文件放在src下,而不是com.amaker.dom包下
二、Student类:
package com.amaker.dom;
public class Student {
private int id;
private int age;
private String name;
/**
* 无参构造方法
*/
public Student() {
super();
}
/**
* 带参构造方法
*/
public Student(int id, int age, String name) {
super();
this.id = id;
this.age = age;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [age=" + age + ", id=" + id + ", name=" + name + "]";
}
}
三、解析类 Test:
package com.amaker.dom;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Test {
/**
* zzl
*/
public static void main(String[] args) {
List<Student> list = readXML();
for (Student s : list) {
System.out.println(s);
}
}
public static List<Student> readXML() {
InputStream in = new Test().getClass().getClassLoader()
.getResourceAsStream("stu.xml");
List<Student> stulist = new ArrayList<Student>();
Student currentStudent;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(in);
Element root = dom.getDocumentElement();
// 查找所有的student节点
NodeList items = root.getElementsByTagName("student");
for (int i = 0; i < items.getLength(); i++) {
currentStudent = new Student();
Element stuElement = (Element) items.item(i);
int id = Integer.parseInt(stuElement.getAttribute("id"));
currentStudent.setId(id);
NodeList stuNode = stuElement.getChildNodes();
for (int j = 0; j < stuNode.getLength(); j++) {
Node node = stuNode.item(j);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element eNode = (Element) node;
String data = eNode.getFirstChild().getNodeValue();
if (eNode.getTagName().equals("name")) {
currentStudent.setName(data);
}
if (eNode.getTagName().equals("age")) {
currentStudent.setId(Integer.parseInt(data));
}
}
}
stulist.add(currentStudent);
}
} catch (Exception e) {
e.printStackTrace();
}
return stulist;
}
}
- 大小: 10 KB
- 大小: 13.3 KB
分享到:
相关推荐
作为XML解析器,TinyXML-2具有以下特点: 1. 轻量级且易于集成:它体积小巧,代码简洁,易于集成到各种 C++ 项目中。 2. API简单易用:它提供了简单易用的 API,使得解析和操作 XML 数据变得简单快捷。开发者可以...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在软件开发、网页制作以及数据交换等领域。...在实际项目中,根据需求选择合适的方法,如解析、创建、修改XML文档,可以极大地提高工作效率。
总结来说,XML解析在Java开发中扮演着重要角色,dom4j和jdom是两个常用的XML处理库,它们各有特点,提供了丰富的功能来帮助开发者处理XML文档。理解这两个库的差异和优势,以及如何在项目中正确使用它们,对于提升...
DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...
在“Xml之DOM解析--学生成绩管理系统”中,我们主要探讨如何使用DOM解析器来读取、处理和更新XML文件,以实现一个简单的学生成绩管理系统的功能。首先,我们需要理解DOM解析的基本流程: 1. **加载XML文档**:使用...
1. **加载XML文档**:首先,我们需要创建一个DOM解析器,如Java中的`DocumentBuilderFactory`和`DocumentBuilder`,它们用于读取XML文件并构建DOM树。 2. **获取根节点**:解析后的XML文档会被转换为一个`Document`...
**DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...
JDOM是Java特有的XML解析库,它提供了更符合Java习惯的API来操作XML。与DOM类似,JDOM也创建一个文档对象模型,但它的设计更简洁,易于使用。相比DOM,JDOM的性能稍好,因为它减少了对象创建和内存使用,但对大型XML...
在这个“XML-DOM-Java-Spec.rar”压缩包中,我们很可能是找到了一个关于如何在Java中使用DOM处理XML的演示文稿,名为“XML-DOM-Java-Spec.ppt”。 以下是关于XML DOM和Java处理XML的一些关键知识点: 1. **DOM解析...
DOM解析器是XML解析的一种方法,它将整个XML文档加载到内存中的一个对象模型,这个模型称为DOM树。开发者可以遍历这个树来访问或修改XML文件的任何部分。因为DOM解析器将整个文件加载到内存,所以对于大型XML文件,...
XML文件的解析主要分为两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。本文将详细探讨这两种解析方式,并通过实例对比它们的特点和使用场景。 **DOM解析** DOM解析器将整个XML文件加载到内存...
在实际应用中,DOM技术常用于动态网页和Web应用程序,例如AJAX(Asynchronous JavaScript and XML)中,XML数据被请求并解析成DOM树,然后用JavaScript更新页面内容。此外,XMLHttpRequest对象也经常与DOM结合,用于...
DOM4j类包,已经打包,放在工程项目的BIN下
DOM解析器会将整个XML树加载到内存中,占用大量资源;SAX是事件驱动的,适合流式处理,但不支持随机访问。而VTD-XML则兼顾了随机访问和资源效率。 6. **应用场景**:VTD-XML适用于大数据分析、XML文档的索引和搜索...
DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时的强大工具。DOM4J的最大亮点在于其简洁易用的API...
### XML解析 1. **基础概念**:XML文件由一系列元素组成,每个元素都有开始标签和结束标签,如`内容</element>`。元素可以嵌套,属性可以附加在开始标签内提供额外信息。 2. **解析方式**: - **DOM解析**:将整个...
这个特定的版本可能包含了XML解析器如Apache Xerces或IBM XML4J,以及相关的接口和类,比如DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等解析方式。 DOM是XML数据的...
6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在处理大型XML文件时节省内存。 7. **与JAXB集成**:DOM4J可以与Java Architecture for XML ...
在解析XML文档时,DOM一次性加载整个文档到内存中,构建出一个树形结构,方便开发者通过API直接查找、添加、删除和修改节点。相比于SAX解析器,DOM在解析时消耗更多资源,但提供了更直观和方便的编程模型。 DOM的...
XML解析器有多种类型,如DOM(Document Object Model)解析器,它将整个XML文档加载到内存中形成一棵树状结构,便于遍历和修改;SAX(Simple API for XML)解析器则采用事件驱动的方式,逐个处理XML元素,节省内存但...