student.xml:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>Stone</name>
<age>26</age>
<sex>男</sex>
<address>北京</address>
</student>
<student>
<name>Snow</name>
<age>24</age>
<sex>女</sex>
<address>北京</address>
</student>
</students>
实体类student:
package com.xml;
public class Student
{
String name;
String sex;
String age;
public Student(String name, String sex, String age)
{
// TODO Auto-generated constructor stub
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
public String getAge()
{
return age;
}
public void setAge(String age)
{
this.age = age;
}
}
package com.xml;
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DOMForXml
{
/**
* 获取document对象
*/
public Document getDocument(String path)
{
Document doc = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File(path));
}
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 doc;
}
/**
* 解析xml
*/
public void parseXml(String path)
{
Document doc = this.getDocument(path);
NodeList nodeList = doc.getElementsByTagName("student");
for (int i = 0; i < nodeList.getLength(); i++)
{
StringBuffer str = new StringBuffer();
str.append("姓名:"
+ doc.getElementsByTagName("name")
.item(i)
.getFirstChild()
.getNodeValue());
str.append(",");
str.append("性别:"
+ doc.getElementsByTagName("sex")
.item(i)
.getFirstChild()
.getNodeValue());
str.append(",");
str.append("年龄:"
+ doc.getElementsByTagName("age")
.item(i)
.getFirstChild()
.getNodeValue());
str.append(",");
System.out.println(str.toString());
}
}
/**
* 保存到文件
*/
public void modifyFile(Document doc,String distFileName)
{
try
{
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource domSource = new DOMSource(doc);
StreamResult sr = new StreamResult(new File("src/student.xml"));
transformer.transform(domSource,sr);
}
catch (TransformerConfigurationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (TransformerException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* new 一个 student
*/
public void addNode(Student student)
{
Document doc = this.getDocument("src/student.xml");
NodeList nodeList = doc.getElementsByTagName("students");
//1 创建新节点
Node stuNode = doc.createElement("student");
Node nameNode = doc.createElement("name");
nameNode.appendChild(doc.createTextNode(student.getName()));
Node sexNode = doc.createElement("sex");
sexNode.appendChild(doc.createTextNode(student.getSex()));
Node ageNode = doc.createElement("age");
ageNode.appendChild(doc.createTextNode(student.getAge()));
//2 添加
stuNode.appendChild(nameNode);
stuNode.appendChild(sexNode);
stuNode.appendChild(ageNode);
nodeList.item(0).appendChild(stuNode);
//3 保存
this.modifyFile(doc, "src/student.xml");
}
/**
* 删除一个节点
*/
public void deleteNode(String name)
{
Document doc = this.getDocument("src/student.xml");
NodeList nodeList = doc.getElementsByTagName("name");
for(int i=0; i<nodeList.getLength(); i++)
{
String value = nodeList.item(i).getFirstChild().getTextContent();
if(name != null && name.equalsIgnoreCase(value))
{
Node parentNode = nodeList.item(i).getParentNode();
doc.getFirstChild().removeChild(parentNode);
}
modifyFile(doc,"src/student.xml");
}
}
/**
* 修改一个节点
*/
public void updateNode(String name)
{
Document doc = this.getDocument("src/student.xml");
NodeList nodeList = doc.getElementsByTagName("name");
for (int i=0; i<nodeList.getLength(); i++)
{
String value = nodeList.item(i).getFirstChild().getTextContent();
if(name != null && name.equalsIgnoreCase(value))
{
Node parentNode = nodeList.item(i).getParentNode();
NodeList nl = parentNode.getChildNodes();
for (int j=0; j<nl.getLength(); j++)
{
String modifyNode = nl.item(j).getNodeName();
if(modifyNode.equalsIgnoreCase("age"))
{
nl.item(j).getFirstChild().setTextContent("100");
}
}
}
}
this.modifyFile(doc, "src/student.xml");
}
}
分享到:
相关推荐
Java DOM 解析 XML 实例 Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过...
本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...
本教程的“DOM解析XML应用实例(入门经典案例)”是一个理想的起点,涵盖了DOM解析的核心概念和操作,适合初学者通过实际操作来学习和掌握。在Myeclipse环境中运行,不仅可以加深理解,还能提高问题解决能力。
DOM解析器将整个XML文件加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML文档。这种方式的优点在于方便、直观,但缺点是占用内存较大,不适用于处理大型XML文件。 首先,我们需要了解XML的...
### DOM解析XML实例详解 #### 一、DOM与XML解析概览 DOM(Document Object Model)是一种被广泛采用的标准,用于表示和操作XML文档。它提供了跨平台、跨语言的XML文档表示方式,使得开发人员能够以树状结构的形式...
**DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...
本实例主要讲解如何在JSP中利用DOM解析XML文件,包括XML文件的读取、数据匹配以及数据写入。 首先,我们需要创建一个简单的User实体类,如`User`,包含姓名(name)、密码(pwd)和电子邮件(email)属性及相应的...
DOM4J作为一个解析器,可以将XML文档转换为一个可操作的Java对象模型,方便我们进行数据的读取和写入。 在`Dom4jTest1.java`中,程序通常会包含以下步骤: 1. 引入DOM4J库:首先,我们需要在Java源代码中引入DOM4J...
在“XML的DOM编程实例”中,我们主要探讨如何利用DOM解析XML文件,并进行读取、修改、创建和删除XML元素。这个实例包含了一个带有图形用户界面(GUI)的应用程序,使用户能够直观地与XML数据交互。下面将详细解释...
本文将深入探讨如何使用DOM读取XML文件,并结合提供的标签“源码”和“工具”,提供实用的代码示例和相关知识。 首先,理解DOM的基本概念。DOM将XML文档看作一个由节点组成的树形结构,其中根节点代表整个文档,而...
`DocumentBuilderFactory`用于创建`DocumentBuilder`实例,`DocumentBuilder`则负责解析XML文档并构建DOM树。在Java源码中,`parse()`方法是解析XML的关键,它会调用底层的解析器(如Xerces或JAXP)。`Document`接口...
很实用的一个dom解析xml实例,很容易上手
以一个实例来说明DOM解析XML文件的方法与过程。
DOM解析器读取整个XML文档到内存中,构建一棵由节点组成的树,这些节点代表了XML文档的所有元素、属性、文本和其他结构。 在Java中,`org.w3c.dom`包提供了DOM解析XML的基础接口和类。以下是DOM解析XML的基本步骤:...
而DOM解析则适用于小型XML文件,因为它提供了更灵活的树形结构操作。根据具体需求和资源限制,开发者可以选择合适的解析方式来处理XML数据。在实际项目中,还可以结合使用这两种解析方式,例如先使用SAX解析大致过滤...
总结一下,Java DOM提供了一套全面的API来处理XML文档,包括创建、修改和读取XML结构。尽管DOM操作相对消耗资源,但其灵活性和强大功能使其成为处理XML的常用工具。对于复杂的XML操作,可以结合使用其他库如JAXB或...
通过DOM,我们可以将整个XML文档加载到内存中,并对其进行读取、修改等操作。这种方式非常适合那些需要对XML文档进行多次访问或修改的应用场景。 #### 标题解释 标题“java_dom解析xml xml java”表明了本文档的...
本实例将深入探讨如何在VB环境中不依赖XML.DLL库来读取XML文件的节点值。 首先,我们需要了解XML文件的基本结构。XML文件由一系列的元素(Element)组成,每个元素可以有属性(Attribute)和子元素。元素通过标签...
每个示例通常会包含初始化解析器、注册事件处理器(对于SAX)、构建XML文档对象(对于DOM)或使用DOM4J API来读取和修改XML内容的步骤。 总的来说,理解和掌握DOM4J、SAX和DOM对于任何涉及XML处理的Java开发人员来...
DOM解析方式允许开发者一次性加载整个XML文档到内存中,形成一个树形结构,便于遍历和操作。尽管对于大型XML文件,DOM解析可能因消耗大量内存而效率低下,但在处理小型XML文件时,DOM方法具有简洁和方便的优点。 ...