package com.jscn.jsmack.utils;
import com.jscn.jsmack.vo.Task;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.UUID;
/**
* Created with IntelliJ IDEA.
* User: wangy
* Date: 15-3-30
* Time: 上午11:38
* To change this template use File | Settings | File Templates.
*/
public class JdomUtils {
public static void main(String[] args) {
String id = String.valueOf(new Random().nextInt(100));
String senTime = "3";
String money = "3";
//文件路径
String file = "c://task.xml";
//文件编码
String encoding = "utf-8";
//appendElement(file, id, senTime, money, encoding);
/*readXML(file);
Task task = new Task();
task.setStep(new String[]{"down"});
task.setId(new String[]{"76"});
task.setTimes(new String[]{"4"});
updateXML(file, task);*/
removeXML(file,"62");
}
public static void appendElement(String file, String id, String senTime, String money, String encoding) {
Document doc;
//利用SAX建立Document
SAXBuilder bSAX = new SAXBuilder(false);
try {
//生成document对象
doc = bSAX.build(new File(file));//"c://task.xml"
Element root = doc.getRootElement();
Element card = appendCard(id, senTime, money);
root.addContent(card);
XMLOutputter outputter = new XMLOutputter();
Format format = Format.getPrettyFormat();
format.setEncoding(encoding);
outputter.setFormat(format);
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file), encoding);
outputter.output(doc, out);
if (out != null)
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//增加task元素
public static Element appendCard(String id, String time, String step) {
Element card = new Element("task");
card.setAttribute("id", id);
Element moneyElem = new Element("step");
moneyElem.setText(step);
Element senTimeElem = new Element("time");
senTimeElem.setText(time);
card.addContent(senTimeElem);
card.addContent(moneyElem);
return card;
}
public static void saveXML(Document doc, String file) {
// 将doc对象输出到文件
try {
// 创建xml文件输出流
XMLOutputter xmlopt = new XMLOutputter();
// 创建文件输出流
FileWriter writer = new FileWriter(file);
// 指定文档格式
Format fm = Format.getPrettyFormat();
// fm.setEncoding("GB2312");
xmlopt.setFormat(fm);
// 将doc写入到指定的文件中
xmlopt.output(doc, writer);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//读取XML
public static List<Task> readXML(String file) {
SAXBuilder sb = new SAXBuilder();
Document doc = null;
List<Task> taskList = new ArrayList<Task>();
Task task = null;
try {
doc = sb.build(file);
Element root = doc.getRootElement();
List<Element> list = root.getChildren("task");
if (list != null && list.size() > 0) {
for (Element el : list) {
task = new Task();
String id = el.getAttributeValue("id");
String step = el.getChildText("step");
String time = el.getChildText("time");
task.setId(new String[]{id});
task.setStep(new String[]{step});
task.setTimes(new String[]{time});
taskList.add(task);
System.out.println(id);
System.out.println(step);
System.out.println(time);
}
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return taskList;
}
public static Task readXMLById(String file,String id) {
SAXBuilder sb = new SAXBuilder();
Document doc = null;
Task task = null;
try {
doc = sb.build(file);
Element root = doc.getRootElement();
List<Element> list = root.getChildren("task");
if (list != null && list.size() > 0) {
for (Element el : list) {
if(el.getAttributeValue("id").equals(id)){
task = new Task();
task.setId(new String[]{id});
task.setStep(new String[]{el.getChildText("step")});
task.setTimes(new String[]{el.getChildText("time")});
break;
}
}
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return task;
}
//根据task节点 更新XML
public static void updateXML(String file, Task task) {
SAXBuilder sb = new SAXBuilder();
Document doc = null;
try {
doc = sb.build(file);
Element root = doc.getRootElement();
List<Element> list = root.getChildren("task");
for (Element el : list) {
if (el.getAttributeValue("id").equals(task.getId()[0])) {
Element step = el.getChild("step");
step.setText(task.getStep()[0]);
Element time = el.getChild("time");
time.setText(task.getTimes()[0]);
break;
}
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
saveXML(doc, file);
}
//根据task 属性ID 删除节点task
public static void removeXML(String file, String id) {
SAXBuilder sb = new SAXBuilder();
Document doc = null;
try {
doc = sb.build(file);
Element root = doc.getRootElement();
List<Element> list = root.getChildren("task");
for (Element el : list) {
if (el.getAttributeValue("id").equals(id)) {
root.removeContent(el);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
saveXML(doc, file);
}
//用UUID来作为task的ID
public static String getUUID() {
String uuid = UUID.randomUUID().toString();
return uuid.replaceAll("-{1}", "");
}
}
分享到:
相关推荐
在"完整的jdom增删改查"这个主题中,我们将深入探讨如何使用JDOM来执行XML文档的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete),这通常被称为CRUD操作。 1. 创建(Create): 创建...
本篇文章将详细介绍如何利用JDOM库在Java中实现XML的增删改查操作。 一、XML的基本结构与JDOM解析 XML文档由元素(Element)、属性(Attribute)、文本内容(Text)等组成。JDOM通过SAX和DOM两种方式解析XML文档。...
本篇文章将详细探讨Java对XML文档进行增删改查的多种方法。 1. **解析XML文档** 在Java中,解析XML主要有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)三种方式。 ...
然而,SAX不提供直接的文档遍历,需要开发者编写事件处理器来实现增删改查功能,相对DOM和JDOM来说,编程复杂度稍高。 4. DOM4J DOM4J是另一个Java XML处理库,它结合了DOM和SAX的优点。DOM4J提供了简洁的API,同时...
在本文中,我们将深入探讨JDOM的核心概念、如何进行XML的增删改查操作以及相关的最佳实践。 ### 一、JDOM的基本概念 1. **Document**: XML文档的根节点,代表整个XML结构。 2. **Element**: XML文档中的元素,可以...
本教程"xml-EXAM.rar_3dm_CQIC_xml增删改查"聚焦于使用Java处理XML文件,实现基本的数据操作:增加、删除、修改和查询。 首先,让我们理解XML的基本结构。XML文档由元素构成,元素是XML的最基本单位,用来封装数据...
"Java 操作 XML 增删改查" 在 Java 中操作 XML 文档有多种方式,常见的有 DOM、DOM4J、JDOM 和 SAX。每种方式都有其优缺,选择哪种方式取决于具体的项目需求。 DOM DOM(Document Object Model)是 W3C 推荐的一...
它提供了简单而直观的API,使得在Java中对XML进行增删改查变得容易。本文将详细介绍如何使用DOM4J进行XML的操作。 首先,我们需要理解XML的基本概念。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它...
Java 操作 XML 文件主要包括四种方式:DOM、JDOM、DOM4J 和 SAX。每种方法都有其特定的优势和适用场景。 1. DOM (Document Object Model):DOM 是一种 W3C 标准,提供了一种将整个 XML 文档加载到内存中的模型,...
通过这个XML增、删、改、查的示例,我们可以更好地理解XML文档的动态操作,并掌握如何利用Java等编程语言进行处理。实际应用中,这些技能对于数据交换、配置文件管理以及任何需要与XML数据交互的场景都至关重要。
2. **操作XML**:对`Document`对象进行增删改查,比如修改`Element`的属性,添加子元素等。 3. **输出XML**:使用`XMLOutputter`类将`Document`对象转换回XML字符串或写入文件。 JDOM还支持XPath表达式,允许开发者...
3. **操作XML**:对`Document`对象进行增删改查操作,如添加元素、修改属性值、删除元素等。 4. **保存XML文档**:最后,通过`Transformer`将`Document`对象转换回XML字符串或写入文件。 **五、JDOM API简要介绍** ...
3. **操作XML**:通过Element、Attribute和Text对象,JDOM提供了丰富的API来进行XML文档的增删改查操作。例如,可以轻松添加、删除或修改元素、属性及其值。 4. **序列化**:JDOM可以将构建好的XML Document对象...
2. **操作XML**: 通过`Element`、`Attribute`等类对`Document`进行增删改查操作。 3. **序列化XML**: 将修改后的`Document`对象转换回XML字符串,可以使用`XMLOutputter`完成此任务。 在压缩包中,`jdom-1.0`和`...
4. **操作XML**:通过`Document`和`Element`对象的方法进行增删改查操作。 ```java Element childElement = document.createElement("child"); rootElement.appendChild(childElement); ``` 5. **保存XML**:...
这个示例涵盖了几个关键的技术知识点,包括JDOM解析XML文档、JDBC数据库操作、验证码生成以及MD5加密。对于初学者来说,理解和掌握这些技术是构建安全、功能完备的Web应用的基础。 首先,我们来看JDOM解析XML文档。...
通过这些对象,开发者可以直接对XML进行增删查改操作,如添加新的元素、修改属性值或删除特定节点。例如,你可以使用`org.jdom2.Element`类创建一个新的元素,然后使用`addContent()`方法将其添加到父元素中。 JDOM...
这使得我们可以方便地通过Java代码对XML文档进行增删改查。JDOM提供了两种主要的构建方式:SAXBuilder和DOMBuilder。SAXBuilder适用于大型XML文件,因为它基于事件驱动,占用内存较少;DOMBuilder则适用于小到中型的...