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_api,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文档,简单易用,快速生成
java操作xml的4中方法中各自所需要的包
本文档主要讲述的是Java操作XML编程实例解析;XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一。...
Java操作XML编程实例解析 Java操作XML编程实例解析 Java操作XML编程实例解析 Java操作XML编程实例解析 Java操作XML编程实例解析 Java操作XML编程实例解析
java读xml,java操作xml文件
java xml,java生成xml文档,java操作XML文件设置值
JAVA操作XML\XML\用JDOM操作XML文件--JSP中文网.mht
java操作xml可能用到的jar
用java操作xml文件示例 xml文件 java操作xml
利用java操作xml的源代码,包括DOM和SAX两种方式
java操作xml和sql server 2008必备包 包括:crimson.jar jdom.jar sqljdbc.jar sqljdbc4.jar特此将其打包以方便网友下载使用
Java操作XML几种方法.pdf
java操作XML的四种方法的比较(有代码)
JAVA操作XML的完整例子——W3C DOM篇 这是一个用JAVA W3C DOM 进行XML的的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门JAVA XML操作的朋友参考和学习。
java 操作XML 采用(dom+dom4j)读写源码 lib包
java操作xml
java操作xml的实例,看了可以让读者快速上手.
Java操作XML文件 dom4j 篇