在这个例子里,我说明DOM解释器修改已有XML文件的使用:
增加新的元素;
更新已有元素属性;
更新已有元素值;
删除已有元素;
1. XML文件
观察前后XML文件。
文件: file.xml - 原XML文件。
[code="xml"]
Users/tongxiqing/file.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?><company><staff id="1"><lastname>孙</lastname><nickname>齐天大圣</nickname><salary>2000000</salary></staff></company>
[/code]
之后,通过DOM XML 解析器更新以上XML 文件。
更新staff属性 id = 2;
更新工资值为 200000;
在staff下添加一个"age"的新元素;
删除staff下的“firstname”元素;
文件:file.xml – 最新修改过的XML文件.
[code="xml"]
<?xml version="1.0" encoding="UTF-8" standalone="no"?><company><staff id="2"><lastname>孙</lastname><nickname>齐天大圣</nickname><salary>2000000</salary><age>28</age></staff></company>
[/code]
2. DOM 解析器
DOM XML 解析器更新了以上的XML文件。
[code="java"]
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.mkyong.seo;
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.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.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
*
* @author Administrator
*/
public class ModifyXMLFile {
public static void main(String argv[]) {
try {
String filepath = "src/Users/tongxiqing/file.xml";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(filepath);
// Get the root element
Node company = doc.getFirstChild();
// Get the staff element , it may not working if tag has spaces, or
// whatever weird characters in front...it's better to use
// getElementsByTagName() to get it directly.
// Node staff = company.getFirstChild();
// Get the staff element by tag name directly
Node staff = doc.getElementsByTagName("staff").item(0);
// update staff attribute
NamedNodeMap attr = staff.getAttributes();
Node nodeAttr = attr.getNamedItem("id");
nodeAttr.setTextContent("2");
// append a new node to staff
Element age = doc.createElement("age");
age.appendChild(doc.createTextNode("28"));
staff.appendChild(age);
// loop the staff child node
NodeList list = staff.getChildNodes();
for (int i = 0; i
分享到:
相关推荐
Java解析XML数据主要涉及到的是对XML文档的读取和处理,SAX(Simple API for XML)解析器是一种基于事件驱动的解析方式,适用于处理大型XML文件。与DOM(Document Object Model)解析器不同,SAX不需要一次性加载...
因为DOM解析器将整个文件加载到内存,所以对于大型XML文件,这种方法可能会消耗大量内存,不适合性能要求高的场景。 2. **在Android中使用DOM解析** 在Android中,我们可以使用`javax.xml.parsers....
需要注意的是,DOM4J使用DOM模型处理XML,因此对于大型XML文件,可能会占用大量内存,这时可以考虑使用SAX或StAX等基于事件的解析器来优化性能。 总之,DOM4J是Java处理XML的一个强大工具,它简化了XML文档的读取、...
然而,DOM解析器的优势在于其灵活性,它允许直接访问和修改XML文档的任意部分,而不需要了解文件的整个结构。 至于提供的压缩包文件"10月22课例"(JDOM),JDOM是Java的一个XML处理库,它提供了一种与DOM类似的API,...
1. **DOM解析器**: Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。使用Java的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口...
### Java DOM 解析 XML 在Java中,DOM(Document...上述示例代码展示了如何使用DOM解析器加载XML文件,并从中提取所需的信息。对于初学者来说,这是一个很好的起点,可以帮助理解DOM的基本用法以及如何与XML数据交互。
为了解析 XML 文件,需要使用解析器,例如 DOM4J 库。DOM4J 库提供了一个名为 SAXReader 的类,用于读取 XML 文件并将其转换为 Document 对象。 在本例中,我们使用 SAXReader 读取 XML 文件,并将其转换为 ...
1. **加载XML文档**:首先,我们需要创建一个DOM解析器,如Java中的`DocumentBuilderFactory`和`DocumentBuilder`,它们用于读取XML文件并构建DOM树。 2. **获取根节点**:解析后的XML文档会被转换为一个`Document`...
在 Java 中使用 DOM 方式解析 XML 文件需要使用 JAXP(Java API for XML Processing),首先需要创建一个解析器工厂,然后使用工厂创建一个具体的解析器对象。然后,使用解析器对象来解析 XML 文件,得到一个 ...
可以考虑使用SAX或者StAX解析器,它们是事件驱动的,只在需要时处理XML数据,减少内存占用。 5. **安全性**: - 防止SQL注入:使用预编译的`PreparedStatement`可以避免SQL注入攻击,确保参数安全。 - 输入验证:...
DOM解析器将整个XML文件加载到内存中,构建一个树形结构,即DOM树。每个XML元素、属性和文本节点都对应于DOM树中的一个对象。这种解析方式的主要优点是可以方便地通过节点关系进行任意遍历和修改,因为所有数据都在...
DOM解析器读取整个XML文档到内存中,构建一棵由节点组成的树,这些节点代表了XML文档的所有元素、属性、文本和其他结构。 在Java中,`org.w3c.dom`包提供了DOM解析XML的基础接口和类。以下是DOM解析XML的基本步骤:...
DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML内容。本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的...
DOM解析器将整个XML文档加载到内存中,形成一个树形结构,称为DOM树。每个XML元素、属性、文本等都被表示为树中的节点。这种解析方式的优点是可以方便地通过节点关系进行遍历和修改,但缺点是占用内存大,尤其对于...
- 创建DOM解析器:使用`javax.xml.parsers.DocumentBuilderFactory`创建解析器工厂,然后通过工厂获取解析器。 - 解析XML文件:调用`parse()`方法解析XML文件,返回一个`Document`对象。 - 访问XML数据:通过`...
在处理XML文件时,DOM解析器会将整个XML文档加载到内存中,形成一个完整的节点树,这样我们就可以通过这个树来查找、修改或遍历XML数据。 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输结构...
DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点遍历访问XML数据。这种方法的优点是操作方便,但缺点是对内存消耗大,不适用于处理大型XML文件。 2. SAX(简单API for XML)解析: 与...
总结来说,Java 中使用 DOM 解析 XML 是一种直观且功能强大的方式,尤其适用于对整个 XML 文档进行遍历和修改。不过,考虑到性能和内存占用,对于大文件或资源有限的环境,可能需要考虑其他解析策略。在 Android ...
DOM解析器将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样可以方便地通过节点遍历、查找和修改XML文档。Java中的DOM解析主要依赖于`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document...
DOM解析器将整个XML文档加载到内存中的树形结构,方便遍历和修改;SAX是事件驱动的解析器,只读且不需要存储整个文档;StAX则是流式解析,允许程序逐个处理XML事件,内存占用相对较小。 1. DOM解析:使用`javax.xml...