`
tenght
  • 浏览: 51077 次
社区版块
存档分类
最新评论

[java]操作XML

 
阅读更多


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(dom,sax,jdom,dom4j)需要的包

    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文件SAX.java 操作xml文件

    java 操作xml文件(包含xml文件和对应jar包)

    Java操作XML文件是Java开发中常见的一项任务,特别是在处理配置、数据交换或存储结构化信息时。XML(Extensible Markup Language)是一种标记语言,它的结构清晰、可读性强,易于机器解析和生成。本篇文章将深入探讨...

    java操作xml工具包

    Java操作XML工具包是开发过程中不可或缺的部分,尤其是在处理与数据交换、配置文件或者与服务器通信相关的任务时。这里提到的两个关键库——XStream和DOM4J,都是Java中广泛使用的XML处理工具。 XStream是一个Java...

    JAVA操作XML文件

    这篇博客文章“JAVA操作XML文件”可能涵盖了如何在Java环境中解析、创建和修改XML文档的核心概念。以下是相关的知识点详解: 1. **DOM解析器**: - DOM(Document Object Model)是W3C的标准,它将XML文档转化为一...

    java操作xml相关jar

    Java操作XML是软件开发中的常见任务,特别是在处理结构化数据时。XML(eXtensible Markup Language)是一种标记语言,用于存储和传输数据。在Java中,为了方便地解析、生成和操作XML文档,通常会引入一些特定的库,...

    java xml,java生成xml文档,java操作XML文件设置值

    二、Java操作XML文件设置值 1. DOM解析:使用DOM解析XML文件时,可以查找特定节点并修改其属性或文本内容。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform....

    java操作xml和sql server 2008必备包(crimson jdom sqljdbc sqljdbc4)

    这里提到的"java操作xml和sql server 2008必备包"包含了四个关键的JAR文件,即crimson.jar、jdom.jar、sqljdbc.jar和sqljdbc4.jar,它们是Java开发者在处理XML和连接SQL Server 2008数据库时不可或缺的工具。...

    java操作XML实例代码

    Java操作XML是编程中常见的任务,特别是在处理配置文件、数据交换或存储结构化信息时。在Java中,我们可以使用各种库来处理XML,比如DOM、SAX和JAXB,但这里我们将关注使用DOM4J库的一个实例代码。DOM4J是一个灵活且...

    Java操作XML编程实例解析.doc

    Java操作XML编程主要涉及到以下几个关键知识点: 1. **XML(eXtensible Markup Language)**:XML是一种可扩展的标记语言,用于存储和传输结构化数据。它的设计目的是传输和存储数据,而不是显示数据,因此它不像...

    java操作xml文件的一个简单代码

    Java操作XML文件是软件开发中常见的任务,XML(Extensible Markup Language)因其结构化和可扩展性被广泛用于数据交换和存储。以下是一些关于如何使用Java处理XML文件的关键知识点: 1. **JAXB(Java Architecture ...

    xml.rar_dom操作xml_java 操作 xml_java xml_sax_xml

    本资料包含的"xml.rar"压缩包提供了使用Java操作XML的源代码示例,涵盖了这两种解析方式。 DOM解析器将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点进行访问和修改。DOM的优点在于它可以随机...

    java_xml_api,java操作XML文档

    它允许开发者将XML数据绑定到Java类上,这样就可以直接通过Java对象来操作XML,反之亦然。JAXB大大简化了XML数据的序列化和反序列化过程,对于XML数据的输入输出操作非常便捷。 4. DOM与SAX的比较 DOM解析器在内存...

    Java操作XML编程实例解析

    ### Java操作XML编程实例解析 #### 一、引言 随着互联网技术的发展,XML作为一种全球通用的结构化语言,因其良好的跨平台性、强大的数据组织能力以及清晰的语法规则而受到广泛的关注与应用。在软件开发过程中,...

    Java操作XML几种方法.pdf

    Java操作XML主要涉及三种方法:DOM、SAX和JDOM。每种方法都有其特点和适用场景,下面将详细讲解这三种方法以及它们在处理XML时的工作原理。 1. DOM(Document Object Model)解析: DOM是一种基于树形结构的XML...

    java操作xml的实例

    本实例将带你深入理解Java操作XML的关键知识点。 1. **DOM解析**: - DOM(Document Object Model)模型是XML文档的一种树形表示方式,Java中的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom....

    java操作XML 的原理以及代码

    Java操作XML是编程中常见的任务,特别是在处理结构化数据或配置文件时。XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,而Java提供了丰富的API来解析、生成和操作XML文档。本篇文章将深入...

    JAVA 操作 XML 增删改查

    JAVA作为一款跨平台的编程语言,提供了丰富的API来操作XML,本篇将重点讲解如何使用JAVA进行XML的增删改查操作。 首先,从"JAVA 操作 XML 增删改查"这个标题来看,我们可以预知内容将涵盖XML文件的基本操作。这些...

Global site tag (gtag.js) - Google Analytics