import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.SAXException;
public class XmlUtil {
private Document document;
List<Element> elements = new ArrayList<Element>();
public static XmlUtil getInstance() {
return new XmlUtil();
}
private XmlUtil() {
}
public void load(String url) throws Exception {
FileInputStream in = new FileInputStream(url);
load(in);
}
public void load(File file) throws Exception {
FileInputStream in = new FileInputStream(file);
load(in);
}
public void load(InputStream in) throws Exception {
try {
SAXReader reader = new SAXReader();
document = reader.read(in);
this.elements = getAllElements(getRootElement());
} finally {
in.close();
}
}
public static Document createDocument() {
Document document = DocumentFactory.getInstance().createDocument();
document.setXMLEncoding("GBK");
return document;
}
public List<Element> getAllElements(Element element) {
List<Element> elements = new ArrayList<Element>();
if (element.elements().size() == 0) {
elements.add(element);
return elements;
} else {
elements.add(element);
for (Object o : element.elements()) {
Element e = (Element) o;
elements.addAll(getAllElements(e));
}
return elements;
}
}
public List findByPath(String path) {
return getRootElement().elements(path);
}
public Element findById(String id) {
List<Element> ele = findByAttribute("id", id);
if (ele.size() > 0)
return ele.get(0);
return null;
}
public List<Element> findByAttribute(String attrName, String attrValue) {
List<Element> ele = new ArrayList<Element>();
for (Element e : this.elements) {
Attribute attr = e.attribute(attrName);
if (attr != null && attrValue.equals(attr.getValue())) {
ele.add(e);
}
}
return ele;
}
public List<Element> getElements() {
return elements;
}
public void setElements(List<Element> elements) {
this.elements = elements;
}
public int findElementIndex(Element e) {
int index = this.elements.indexOf(e);
return index > 0 ? index - 1 : index;
}
public void updateElement(Element element, int index) {
Element e = this.elements.get(index);
this.elements.set(index, element);
removeElement(index);
e.getParent().add(element);
}
public void addElement(Element parentElement, Element e) {
parentElement.add(e);
this.elements.add(e);
}
public boolean removeElement(Element e) {
this.elements.remove(e);
return e.getParent().remove(e);
}
public boolean removeElement(int index) {
this.elements.remove(index);
Element e = this.elements.get(index);
return e.getParent().remove(e);
}
public Element getRootElement() {
return document.getRootElement();
}
public String getEncoding() {
return document.getXMLEncoding();
}
public void setEncoding(String encoding) {
document.setXMLEncoding(encoding);
}
public Document getDocument() {
return document;
}
public void setDocument(Document document) {
this.document = document;
this.elements = getAllElements(getRootElement());
}
public void save(String url) throws SAXException, IOException {
FileOutputStream out = new FileOutputStream(url);
save(out);
out.close();
}
public void save(File file) throws SAXException, IOException {
FileOutputStream out = new FileOutputStream(file);
save(out);
out.close();
}
public void save(OutputStream out) throws SAXException, IOException {
out.write(document.asXML().getBytes());
}
public void dispose() {
this.elements.clear();
}
}
分享到:
相关推荐
Java操作XML文档是常见的任务,尤其在处理结构化数据、配置文件或与Web服务交互时。XML(eXtensible Markup Language)是一种用于标记数据的语言,具有良好的可读性和灵活性。在Java中,有多种方式来解析和操作XML...
SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件
Java操作XML文件是Java开发中常见的一项任务,特别是在处理配置、数据交换或存储结构化信息时。XML(Extensible Markup Language)是一种标记语言,它的结构清晰、可读性强,易于机器解析和生成。本篇文章将深入探讨...
Java操作XML工具包是开发过程中不可或缺的部分,尤其是在处理与数据交换、配置文件或者与服务器通信相关的任务时。这里提到的两个关键库——XStream和DOM4J,都是Java中广泛使用的XML处理工具。 XStream是一个Java...
这篇博客文章“JAVA操作XML文件”可能涵盖了如何在Java环境中解析、创建和修改XML文档的核心概念。以下是相关的知识点详解: 1. **DOM解析器**: - DOM(Document Object Model)是W3C的标准,它将XML文档转化为一...
Java操作XML是软件开发中的常见任务,特别是在处理结构化数据时。XML(eXtensible Markup Language)是一种标记语言,用于存储和传输数据。在Java中,为了方便地解析、生成和操作XML文档,通常会引入一些特定的库,...
二、Java操作XML文件设置值 1. DOM解析:使用DOM解析XML文件时,可以查找特定节点并修改其属性或文本内容。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform....
这里提到的"java操作xml和sql server 2008必备包"包含了四个关键的JAR文件,即crimson.jar、jdom.jar、sqljdbc.jar和sqljdbc4.jar,它们是Java开发者在处理XML和连接SQL Server 2008数据库时不可或缺的工具。...
Java操作XML是编程中常见的任务,特别是在处理配置文件、数据交换或存储结构化信息时。在Java中,我们可以使用各种库来处理XML,比如DOM、SAX和JAXB,但这里我们将关注使用DOM4J库的一个实例代码。DOM4J是一个灵活且...
Java操作XML编程主要涉及到以下几个关键知识点: 1. **XML(eXtensible Markup Language)**:XML是一种可扩展的标记语言,用于存储和传输结构化数据。它的设计目的是传输和存储数据,而不是显示数据,因此它不像...
Java操作XML文件是软件开发中常见的任务,XML(Extensible Markup Language)因其结构化和可扩展性被广泛用于数据交换和存储。以下是一些关于如何使用Java处理XML文件的关键知识点: 1. **JAXB(Java Architecture ...
本资料包含的"xml.rar"压缩包提供了使用Java操作XML的源代码示例,涵盖了这两种解析方式。 DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点进行访问和修改。DOM的优点在于它可以随机...
它允许开发者将XML数据绑定到Java类上,这样就可以直接通过Java对象来操作XML,反之亦然。JAXB大大简化了XML数据的序列化和反序列化过程,对于XML数据的输入输出操作非常便捷。 4. DOM与SAX的比较 DOM解析器在内存...
### Java操作XML编程实例解析 #### 一、引言 随着互联网技术的发展,XML作为一种全球通用的结构化语言,因其良好的跨平台性、强大的数据组织能力以及清晰的语法规则而受到广泛的关注与应用。在软件开发过程中,...
Java操作XML主要涉及三种方法:DOM、SAX和JDOM。每种方法都有其特点和适用场景,下面将详细讲解这三种方法以及它们在处理XML时的工作原理。 1. DOM(Document Object Model)解析: DOM是一种基于树形结构的XML...
本实例将带你深入理解Java操作XML的关键知识点。 1. **DOM解析**: - DOM(Document Object Model)模型是XML文档的一种树形表示方式,Java中的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom....
Java操作XML是编程中常见的任务,特别是在处理结构化数据或配置文件时。XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,而Java提供了丰富的API来解析、生成和操作XML文档。本篇文章将深入...
JAVA作为一款跨平台的编程语言,提供了丰富的API来操作XML,本篇将重点讲解如何使用JAVA进行XML的增删改查操作。 首先,从"JAVA 操作 XML 增删改查"这个标题来看,我们可以预知内容将涵盖XML文件的基本操作。这些...