`
wangyu070707
  • 浏览: 13109 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JDOM 增删改查

 
阅读更多
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增删改查"这个主题中,我们将深入探讨如何使用JDOM来执行XML文档的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete),这通常被称为CRUD操作。 1. 创建(Create): 创建...

    jdom 操作XML实现增删改查

    本篇文章将详细介绍如何利用JDOM库在Java中实现XML的增删改查操作。 一、XML的基本结构与JDOM解析 XML文档由元素(Element)、属性(Attribute)、文本内容(Text)等组成。JDOM通过SAX和DOM两种方式解析XML文档。...

    java xml增删改查多种方法

    本篇文章将详细探讨Java对XML文档进行增删改查的多种方法。 1. **解析XML文档** 在Java中,解析XML主要有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)三种方式。 ...

    Xml_Factory.zip_factory_sax_xml的增删改查

    然而,SAX不提供直接的文档遍历,需要开发者编写事件处理器来实现增删改查功能,相对DOM和JDOM来说,编程复杂度稍高。 4. DOM4J DOM4J是另一个Java XML处理库,它结合了DOM和SAX的优点。DOM4J提供了简洁的API,同时...

    jdom增,删,改,解析

    在本文中,我们将深入探讨JDOM的核心概念、如何进行XML的增删改查操作以及相关的最佳实践。 ### 一、JDOM的基本概念 1. **Document**: XML文档的根节点,代表整个XML结构。 2. **Element**: XML文档中的元素,可以...

    xml-EXAM.rar_3dm_CQIC_xml增删改查

    本教程"xml-EXAM.rar_3dm_CQIC_xml增删改查"聚焦于使用Java处理XML文件,实现基本的数据操作:增加、删除、修改和查询。 首先,让我们理解XML的基本结构。XML文档由元素构成,元素是XML的最基本单位,用来封装数据...

    java操作xml增删改查.pdf

    "Java 操作 XML 增删改查" 在 Java 中操作 XML 文档有多种方式,常见的有 DOM、DOM4J、JDOM 和 SAX。每种方式都有其优缺,选择哪种方式取决于具体的项目需求。 DOM DOM(Document Object Model)是 W3C 推荐的一...

    用dom4j对xml进行增删改查操作参考资料

    它提供了简单而直观的API,使得在Java中对XML进行增删改查变得容易。本文将详细介绍如何使用DOM4J进行XML的操作。 首先,我们需要理解XML的基本概念。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它...

    java操作xml增删改查.doc

    Java 操作 XML 文件主要包括四种方式:DOM、JDOM、DOM4J 和 SAX。每种方法都有其特定的优势和适用场景。 1. DOM (Document Object Model):DOM 是一种 W3C 标准,提供了一种将整个 XML 文档加载到内存中的模型,...

    XML文件增、删、改、查示例

    通过这个XML增、删、改、查的示例,我们可以更好地理解XML文档的动态操作,并掌握如何利用Java等编程语言进行处理。实际应用中,这些技能对于数据交换、配置文件管理以及任何需要与XML数据交互的场景都至关重要。

    jdom.rar内含多个jdom包

    2. **操作XML**:对`Document`对象进行增删改查,比如修改`Element`的属性,添加子元素等。 3. **输出XML**:使用`XMLOutputter`类将`Document`对象转换回XML字符串或写入文件。 JDOM还支持XPath表达式,允许开发者...

    JDOM帮助文档以及使用教程

    3. **操作XML**:对`Document`对象进行增删改查操作,如添加元素、修改属性值、删除元素等。 4. **保存XML文档**:最后,通过`Transformer`将`Document`对象转换回XML字符串或写入文件。 **五、JDOM API简要介绍** ...

    JDOM软件下载

    3. **操作XML**:通过Element、Attribute和Text对象,JDOM提供了丰富的API来进行XML文档的增删改查操作。例如,可以轻松添加、删除或修改元素、属性及其值。 4. **序列化**:JDOM可以将构建好的XML Document对象...

    jdom(1.0和1.1完整包)

    2. **操作XML**: 通过`Element`、`Attribute`等类对`Document`进行增删改查操作。 3. **序列化XML**: 将修改后的`Document`对象转换回XML字符串,可以使用`XMLOutputter`完成此任务。 在压缩包中,`jdom-1.0`和`...

    java开发常用jar包之jdom.rar

    4. **操作XML**:通过`Document`和`Element`对象的方法进行增删改查操作。 ```java Element childElement = document.createElement("child"); rootElement.appendChild(childElement); ``` 5. **保存XML**:...

    J2EE用户注册与登录简单示例

    这个示例涵盖了几个关键的技术知识点,包括JDOM解析XML文档、JDBC数据库操作、验证码生成以及MD5加密。对于初学者来说,理解和掌握这些技术是构建安全、功能完备的Web应用的基础。 首先,我们来看JDOM解析XML文档。...

    jdom2.0.5.0.zip

    通过这些对象,开发者可以直接对XML进行增删查改操作,如添加新的元素、修改属性值或删除特定节点。例如,你可以使用`org.jdom2.Element`类创建一个新的元素,然后使用`addContent()`方法将其添加到父元素中。 JDOM...

    JDOM实现从数据库读取字段生成XML树

    这使得我们可以方便地通过Java代码对XML文档进行增删改查。JDOM提供了两种主要的构建方式:SAXBuilder和DOMBuilder。SAXBuilder适用于大型XML文件,因为它基于事件驱动,占用内存较少;DOMBuilder则适用于小到中型的...

Global site tag (gtag.js) - Google Analytics