文章目录

  • 基本用法
    • 实战
      • 引入jar包
      • 工具类xmlutil:
      • 业务代码:
        • 查看效果:

最近有个项目用到了xml的写入,其实目前java有很多的方式操作xml,比如之前用到的dom4j,今天推荐个更好用的jdom,目前的版本是2了。
“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。”

jdom的官方git地址:
https://github.com/hunterhacker/jdom

基本用法

实战

写一个xml,并保存到指定的目录中,以xml文件的形式展示:

引入jar包

<dependency><groupId>org.jdom</groupId><artifactId>jdom</artifactId><version>2.0.2</version>
</dependency>

工具类xmlutil:

import com.alibaba.fastjson.JSONObject;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.slf4j.LoggerFactory;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class XMLUtils {private static final org.slf4j.Logger logger = LoggerFactory.getLogger(XMLUtils.class);/*** 将文档写入本地的xml文件中* @param document* @param name* @return*/public static boolean createXMLFile(Document document, String name) {try {File file = new File(name + ".xml");XMLOutputter xmlOutputter = new XMLOutputter();Format format = Format.getRawFormat();format.setIndent(" ");format.setTextMode(Format.TextMode.TRIM_FULL_WHITE);// document.setDocType( new DocType().setElementName(document.getRootElement()));xmlOutputter.setFormat(format);xmlOutputter.output(document, new FileOutputStream(file));return true;} catch (IOException e) {logger.error("创建XML出错", e);return false;}}/***  将json对象,转成xml格式数据* @param jsonObject* @return*/public static List jsonToXML(JSONObject jsonObject) {List list=new ArrayList<Element>();jsonObject.entrySet().forEach(i -> {Element element = new Element(i.getKey());element.setText(i.getValue().toString());list.add(element);});return  list;}/*** 将map转成xml格式数据* @param map* @return*/public  static List mapToXMl(Map map){List list=new ArrayList<Element>();map.forEach((i,v) -> {Element element = new Element(i.toString());element.setText(v!=null?v.toString():"");list.add(element);});return  list;}/*** 将xml文件解析成document文档* @param path* @return*/public static Document parseXMLFile(String path) {try {File file = new File(path+".xml");return  new SAXBuilder().build(file);} catch (Exception e) {e.printStackTrace();logger.error("解析XML出错", e);return null;}}/*** 根据节点属性获取某个文档节点* @param element* @param id* @return*/public static Element getElementById(Element element, String id) {Element child = null;for (Element item : element.getChildren()) {if (item.getAttributeValue("id").equals(id)) {child = item;}}return child;}
}

业务代码:

拷贝不能直接使用,有些是从数据库中读取的内容

public static void creatClothesXmlTest() {/* 创建xml相关的逻辑 *///创建xml根元素  1.判断文件是否存在,如果存在先删除了,然后创建根元素
//      String fileConfigPath = EdgemgmtConfig.getCameraConfigClothesUploadFile() + ".xml";String fileConfigPath = "D:/cameraConfigClothesUpload";Boolean isExists = FileUtils.isFileExists(fileConfigPath + ".xml");Document document = null;if (isExists) {FileUtils.deleteFile(fileConfigPath + ".xml");}document = new Document();document.setRootElement(new Element("cameraConfigClothesUpload"));Element rootEle = document.getRootElement();Element cameraElement = new Element("camera");cameraElement.setAttribute("id", 1 + "");Map map = new HashMap<String, Object>() {{put("cameraId", 1);put("cameraName", "摄像头1");put("videoStream", "rtsp://admin:jingke1533@192.168.2.4/Streaming/Channels/101?transportmode=unicast&profile=Profile_1");put("mark", "暂无备注");}};//摄像头基础信息转xmlcameraElement.addContent(XMLUtils.mapToXMl(map));cameraElement.addContent(new Element("detectionAlgorithms"));Element detectionAlgorithms = cameraElement.getChild("detectionAlgorithms");SysCameraAlgorithm sysCameraAlgorithm = new SysCameraAlgorithm();sysCameraAlgorithm.setId(1L);sysCameraAlgorithm.setAlgorithmName("工服检测");sysCameraAlgorithm.setTrustValue(0.5D);//告警周期sysCameraAlgorithm.setWarningInterval(2);//检测周期sysCameraAlgorithm.setDiscernInterval(2);//运行状态sysCameraAlgorithm.setRunStatus(1);ZoneId zoneId = ZoneId.of("Asia/Shanghai");ZonedDateTime zonedDateTime = ZonedDateTime.of(1970, 1, 1, 0, 0, 0, 0, zoneId);Date startDate = Date.from(zonedDateTime.toInstant());zonedDateTime = ZonedDateTime.of(1970, 1, 1, 23, 59, 59, 0, zoneId);Date endDate = Date.from(zonedDateTime.toInstant());sysCameraAlgorithm.setRunStartTime(startDate);sysCameraAlgorithm.setRunEndTime(endDate);sysCameraAlgorithm.setAlgorithmId(29L);SysCameraAlgorithmServiceImpl cameraAlgorithmService = new SysCameraAlgorithmServiceImpl();//创建算法xml 从数据库中查询获取到算法对象Element sysCameraAlgorithmConfigElement = cameraAlgorithmService.createConfigElement(sysCameraAlgorithm);//添加算法内容detectionAlgorithms.addContent(sysCameraAlgorithmConfigElement);//添加摄像头节点rootEle.addContent(cameraElement);//创建文件XMLUtils.createXMLFile(document, fileConfigPath);}public static void main(String[] args) {creatClothesXmlTest();}

查看效果:

D盘已经有了该文件:

具体内容:


大功告成!!!

“前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。”

jdom操作xml实战相关推荐

  1. java jdom_java使用Jdom实现xml文件写入操作实例

    本文实例讲述了java使用Jdom实现xml文件写入操作的方法.分享给大家供大家参考,具体如下: package com.yanek.demo.xml.test; import java.io.Fil ...

  2. Jdom makes xml easy

    核心提示:XML 是数据领域的 Java 语言,它使数据独立于创建它的软件和该软件所在的操作系统,就像 Java 使软件独立于操作系统一样. Jdom makes xml easy , said by ...

  3. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)Shell脚本与MySQL数据库交互(增删改查)# 环境准备:安装mariadb 数据库 [root ...

  4. 使用JDOM解析XML

    最近的工作常常要和XML格式的文档或字符串打交道,发现用JDOM来做真是方便.可以实现XML应用程序的快速开发. 在 JDOM 中,XML元素就是 Element 的实例,XML属性就是 Attrib ...

  5. shell编程系列23--shell操作数据库实战之mysql命令参数详解

    shell编程系列23--shell操作数据库实战之mysql命令参数详解mysql命令参数详解-u 用户名-p 用户密码-h 服务器ip地址-D 连接的数据库-N 不输出列信息-B 使用tab键代替 ...

  6. 简单使用JDOM解析XML

    简单使用JDOM解析XML 博客分类: xml XMLJava编程ASPVB 使用JDOM解析XML 一.前言     JDOM是Breet Mclaughlin和Jason Hunter两大Java ...

  7. Dom4j操作XML

    dom4j帮助文档在dom4j-1.6.1/docs/guide.html文件里面,全部是英文,但是基本上应该能看懂. 1.  四种操作xml的方式:SAX,DOM,JDOM,DOM4J. 2.  D ...

  8. Strus2第一次课:dom4j操作xml

    先从底层的xml操作技术记录: 当我们新建一个项目,什么架包都没加入的时候,java提供了 org.w3c.dom给我们操作xml里面的元素 import org.w3c.dom.Document; ...

  9. Java原生API操作XML

    使用Java操作XML的开源框架比较多,如著名的Dom4J.JDOM等,但个人认为不管你用那个框架都要对JDK原生的API有所了解才能更得心应手的应用.本篇就来简单了解下原生的XML API. JAV ...

最新文章

  1. java soa例子_哪位大牛能举个实例讲下SOA与传统架构的区别?
  2. 使用aardio(快手)编程
  3. 下载linux操作系统一般的初始账号密码(虚拟机)
  4. 基于python技术的自动化运维是干嘛的_《Python自动化运维 技术与最佳实践》.pdf...
  5. 二元隐函数求二阶偏导_在线计算专题(03):具体、抽象函数的导数、微分与方向导数的计算...
  6. 电脑小白来一起学习计算机基础知识!
  7. 抛物面天线的工作原理是什么?
  8. js引擎执行代码的基本流程
  9. java 类持久化_Java 持久化之 -- IO 全面整理(看了绝不后悔)
  10. java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...
  11. 最高检:教职工有性侵记录的,不得录用
  12. graphpad图片怎么导出矢量图_为何我的文章图片总是不满足杂志社要求?
  13. Java配置Path环境变量
  14. Matlab imnoise函数的说明
  15. 批量转换图片文件格式(将JPEG、PNG转成JPG)
  16. C#线性表约瑟夫环(Joseph Ring)
  17. 特征值篇2——特征子空间
  18. oracle存储过程语法累加,Oracle 存储过程语法总结及练习
  19. 防侧漏之弱引用的使用
  20. 腾讯华为签署《深圳市APP个人信息保护自律承诺书》举措新解读

热门文章

  1. 数字签名(代码签名)流程和数字签名的验证
  2. 【Java.JMS】一个简单的JMS实例
  3. linux网卡驱动离线安装_linux下网卡驱动安装全过程
  4. 职场晋升“潜规则”:15 年经验资深技术经理的职场忠告
  5. linux sqlserver有图形化吗,SQL Server for Linux 下一版本的公共预览
  6. 根据经纬度计算两地距离
  7. vue实现带样式的textarea输入框,contenteditable属性应用
  8. C语言剖析OC的rangeOfString方法
  9. 30岁是全新的20岁?---《20岁时光不再来》
  10. 数据采集爬虫ip代理基本原理-飞蚁代理