对xml内数据的操作(xml生成、增删改查)

2023-11-08

接口:


package com.baozupo.gzl.severce;
import org.dom4j.Document;
import com.baozupo.gzl.bean.Froms;

public interface XMLUtilsSeverce {
/**
     * 获取XML中的信息
     * @return
     */
public Froms getAllUser(String wflowTitle);
/**
    * 向XML文件中添加一个user
    * @param user
    */
public  void add(String wflowTitle,String inputData);
 
/**
    * 根据id删除user
    * @param id
    */
public void deleteById(String id);
/**
    * 修改user信息
    * @param user
    */
public  void update(String wflowTitle,String inputData);
 
}


实例化:

package com.baozupo.gzl.severceImpl;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.springframework.stereotype.Service;


import com.baozupo.gzl.bean.Froms;
import com.baozupo.gzl.severce.XMLUtilsSeverce;




@Service
public class XMLUtilsSeverceImpl implements XMLUtilsSeverce {
/**
     * 获取XML中所有的用户信息
     * @return
     */
    public  Froms getAllUser(String wflowTitle){
        Document document=getDocument();
        Element rootElement=document.getRootElement();
         
        List<Element> userElements=rootElement.elements();
        Froms from=new Froms();
        for (Element userElement : userElements) {
        if(wflowTitle.equals(userElement.element("wflowTitle").getTextTrim())){
        from.setThisName(userElement.element("wflowTitle").getTextTrim());
            from.setThisValue(userElement.element("inputData").getTextTrim());
        }
        }
        return from;
    }
     
    /**
     * 向XML文件中添加一个user
     * @param user
     */
    public  void add(String wflowTitle,String inputData){
    File file =new File("D:\\java_\\user.xml");
    Document document=null;
        if(file.exists())
        { 
        document=getDocument();
        }else{
        document=DocumentHelper.createDocument();
        Element root = document.addElement("gooflows");
        }
        
        Element rootElement=document.getRootElement();
         
        Element userElement=rootElement.addElement("flow");
        if(file.exists()){
        userElement.addAttribute("id",getMaxId()+1+"");
        }else{
        userElement.addAttribute("id",1+"");
        }
        Element nameElement=userElement.addElement("wflowTitle");
        Element ageElement=userElement.addElement("inputData");
        nameElement.setText(wflowTitle);
        ageElement.setText(inputData);
         
        if(file.exists()){
        write2XML(document);
        }else{
        saveDocumentToFile(document);
        }
        
    }
    /**
     * 根据id删除user
     * @param id
     */
    public  void deleteById(String id){
        Document document=getDocument();
        Element rootElement=document.getRootElement();
         
        List<Element> userElements=rootElement.elements("user");
        for (Element userElement : userElements) {
            if(userElement.attributeValue("id").equals(id)){
                System.out.println("开始删除.....");
                rootElement.remove(userElement);
                System.out.println("删除结束.....");
            }
        }
        write2XML(document);
    }
    /**
     * 修改user信息
     * @param user
     */
    public  void update(String wflowTitle,String inputData){
        Document document=getDocument();
        Element rootElement=document.getRootElement();
         
        List<Element> userElements=rootElement.elements();
        for (Element userElement : userElements) {
            if(wflowTitle.equals(userElement.element("wflowTitle").getTextTrim())){
                List<Element> elements=userElement.elements();
                userElement.element("wflowTitle").setText(wflowTitle);
                userElement.element("inputData").setText(inputData);
            }
        }
        write2XML(document);
    }
     
    /**
     * 获取根节点
     * @return rootElement
     */
    public static Document getDocument(){
        try {
       
            SAXReader saxReader=new SAXReader();
          //  InputStream in=OperateXML.class.getResourceAsStream("/user.xml");
            Document document=saxReader.read("D:\\java_\\user.xml");
             
            return document;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /**
     * 把内容写到XML文件中
     * @param document
     */
    public static void write2XML(Document document){
        try {
            OutputFormat format=new OutputFormat("  ", true, "utf-8");
            format.setTrimText(true);
            XMLWriter writer = new XMLWriter(format);
            writer.setOutputStream(new FileOutputStream("D:\\java_\\user.xml"));
            writer.write(document);
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /**
     * 获取xml文件中userId的最大值
     * @return int
     */
    public static int getMaxId(){
        int maxId=0;
        Document document=getDocument();
        Element rootElement=document.getRootElement();
        List<Element> userElements=rootElement.elements();
        for (Element element : userElements) {
            int id=Integer.valueOf(element.attributeValue("id"));
            if(maxId<id){
                maxId=id;
            }
        }
        return maxId;
    }
    
    /**
 * 方法描述:<b>存储完整XML文件.</b></br>
 * 备 注: </br>
 * 创 建 人: zyl</br>
 * 创建日期:2013-3-18</br>
 *
 * @param document
 * @param xmlFilePath
 * @param xmlFileName
 * @param isTrimText
 * @param xmlEncoding
 */
public static void saveDocumentToFile(Document document) {


 File file = new File("D:\\java_");
 // 判断路径是否存在,不存在创建
 if (!file.exists()) {
  file.mkdirs();
 }
 // 保存文件
 OutputFormat format = null;


 format = OutputFormat.createPrettyPrint();


 format.setEncoding("UTF-8");// UTF-8


 try {
  org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
    new FileOutputStream("D:\\java_\\user.xml"), format);// FileOutputStream可以使UTF-8生效
  xmlWriter.write(document);
  xmlWriter.close();
 } catch (IOException e) {
  System.out.println("保存XML异常:" + e.getMessage());
  System.out.println("正在保存的文件名是:user.xml");
 }
 // 存到文件中结束
}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对xml内数据的操作(xml生成、增删改查) 的相关文章

随机推荐

  • 网络数据传输流程

    目录 一 局域网传输流程 1 集线器 2 交换机 3 交换机 路由器 二 广域网数据传输流程 主要过程 一 局域网传输流程 1 集线器 主要过程 源主机 从上到下封装 如果知道目的IP主机的MAC地址就直接封装在数据链路层的以太网帧头中 如
  • 多线程实现大批量数据查询

    优化一个系统中的功能 需要通过判断进行多次的查库 查库的性能是单表 条件有索引 public Map
  • PostgreSQL插件-pg_stat_statements-查找最耗费资源的SQL(Top SQL)

    数据库是较大型的应用 对于繁忙的数据库 需要消耗大量的内存 CPU IO 网络资源 SQL 优化是数据库优化的手段之一 而为了达到 SQL 优化的最佳效果 您首先需要了解最消耗资源的 SQL Top SQL 例如 IO 消耗最高的 SQL
  • leetcode之找出相交链表的交点

    题目 编写一个程序 找到两个单链表相交的起始节点 如果相交只会是y型相交 如果不想交就返回空指针 O 1 空间和O n 时间 分析 直接采取暴力二重循环可以求解 但是超过时间限制 一个思路是先找出两个链表长度相差的值 然后一个链表先走相差的
  • 关于DAG共识的调研

    内容目录 前言 why DAG DAG 是什么 常见共识机制 主链DAG共识 朴素DAG 平行链DAG 问题与挑战 这是自己看的一篇综述 参考里面的分类并对现在的一些DAG共识做的简要理解 后面会对一些共识的论文做学习笔记 若有错误之处还请
  • 公开数据集下载地址

    这里写目录标题 一 目标检测 分割数据集 1 COCO 数据集 COCO2014 COCO2017 2 PASCAL VOC数据集 voc2007数据集 voc 2012数据集 二 自动驾驶数据集 1 BDD100K 数据集 2 Nusce
  • STM32单片机示例:多个定时器同步触发启动

    文章目录 前言 基础说明 关键配置与代码 其它补充 示例链接 前言 多个定时器同步触发启动是一种比较实用的功能 这里将对此做个示例说明 基础说明 该示例演示通过一个TIM使能时同步触发使能另一个TIM 本例中使用TIM1作为主机 使用TIM
  • Linux主机测评

    安全计算环境 一 身份鉴别 a 应对登录的用户进行身份标识和身份鉴别 身份标识具有唯一性 身份鉴别信息具有复杂度要求并定期更换 此项部分符合 在root权限下查看有关用户的配置文件 1 通过etc password检查身份标识 看是否有没有
  • qq windows版客户端0day复现——远程代码执行(七夕小礼物)

    ps 本文章仅用来分享 请勿将文章内的相关技术用于非法目的 请勿将文章内的相关技术用于非法目的 请勿将文章内的相关技术用于非法目的 如有非法行为与本文章作者无任何关系 一切行为以遵守 中华人民共和国网络安全法 为前提 今天hw貌似爆了挺多劲
  • R语言 集成算法(Bagging算法和Adaboot算法)

    关注微信公共号 小程在线 关注CSDN博客 程志伟的博客 R版本 3 6 1 adaboost包 提供Bagging函数和Adaboot函数 gt setwd G R语言 大三下半年 数据挖掘 R语言实战 gt data read csv
  • 实现登录功能之拦截器和导航守卫的使用

    需求 本次主要通过SpringSecurity jwt vue实现简易的登录Demo 实现的功能 主要写Demo过程中记录关于拦截器和导航守卫的使用 环境 nodejs v14 16 1 vue 2 9 6 npm 6 14 12 webp
  • 【求助】ERROR: No matching distribution found for python-gssapi==0.6.4怎么解决

    Collecting python gssapi 0 6 4 Using cached https pypi tuna tsinghua edu cn packages a4 9e 648b4e85235097edcee561c986f70
  • 数据结构-时间复杂度

    一 常数操作 常见固定时间的操作 1 常见算术运算 2 位运算 gt gt gt gt gt lt lt 等 3 赋值 比较 自增 自减 4 数组寻址 可以通过计算偏移量直接获取第N位置的内容 对比链表寻址 是没有办法直接计算得到第N位置的
  • c# 进程的创建与撤销

    1 创建进程 using System using System Diagnostics using System ComponentModel namespace MyProcessSample class MyProcess publi
  • C++(11):线程局部变量thread_local

    多线程中 每个线程都拥有自己的栈空间 但是对于全局变量 静态变量以及堆上空间 是共享于多个线程间的 这可以有效的在多个线程间共享数据 但也是多线程竞争的主要来源 include
  • 浅谈人工智能与伦理道德

    人工智能技术简介 人 工 智 能 技 术 简 称 AI ArtificialIntelligence AI作为一门学科 于1956 年问世 是由 人工智能之父 麦卡锡 McCartney 及一批数学家 信息学家 心理学家 神经生理学家 计算
  • Android 调试桥(adb)安装、配置、使用

    一 安装 1 官网 https developer android com studio command line adb 2 下载 3 解压 二 配置环境 在安装完成之后 将android的adb工具所在目录加入环境变量里面 1 在终端中
  • neo4j--Cypher索引、约束、统计

    Cypher索引 约束 统计 1 索引 1 1创建索引 使用CREATE INDEX ON可以在拥有某个标签的所有节点的某个属性上创建索引 注意 索引是在后台创建 并不能立刻就生效 CREATE INDEX ON Person name 本
  • 已知路由器R1的路由表如表4-12所示。试画出各网络和必要的路由器的连接拓扑,标注出必要的IP地址和接口。对不能确定的情况应当指明。

    姐 注意点 1 下一跳地址即代表路由器
  • 对xml内数据的操作(xml生成、增删改查)

    接口 package com baozupo gzl severce import org dom4j Document import com baozupo gzl bean Froms public interface XMLUtils