使用 dom4j 比较两个xml文件内容,并输出结果

dom4j读取并修改xml文件 今天的需求是读取xml文件,根据现有的实体bean修改xml文件参数。 首先我们需要引入dom4j的依赖,如下: <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> &... 阅读详情
private Map<String, Element> removeDuplication(String filepath1, String filepath2, String rootName, String attrName) throws Exception {
        // 读取第一个xml
        Map<String, Element> map1 = readXml(filepath1, rootName, attrName);
        Set<String> set1 = map1.keySet();
        System.out.println(map1.keySet());
        // 读取第二个xml
        Map<String, Element> map2 = readXml(filepath2, rootName, attrName);
        Set<String> set2 = map2.keySet();
        System.out.println(map2.keySet());

        Map<String, Element> newMap = new TreeMap<>();
        // 第二个map根据第一个去重
        Sets.SetView<String> difference = Sets.difference(set2, set1);
        for (String s : difference) {
            newMap.put(s, map2.get(s));
        }
        return newMap;
    }

    private void writeXml(Map<String, Element> map, String filepath, String rootName) throws Exception {

        // 重写文件
        // 1. 创建Docuembnt
        Document doc = DocumentHelper.createDocument();
        // 2. 创建根元素
        Element root = doc.addElement(rootName);
        // root.addComment("文档的根city已经创建。");// 添加注释

        for (Map.Entry<String, Element> entry : map.entrySet()) {
            entry.getValue().setParent(null);
            root.add(entry.getValue());
            // entry.getValue().setParent(root);
            // doc.add(entry.getValue());
        }

        // 创建输出流
        Writer out = new PrintWriter(filepath, "utf-8");
        // 格式化
        OutputFormat format = new OutputFormat("    ", true);
        format.setTrimText(true);//去掉原来的空白(\t和换行和空格)!

        XMLWriter writer = new XMLWriter(out, format);
        // 把document对象写到out流中。
        writer.write(doc);

        out.close();
        writer.close();
    }

    /**
     * @param filepath 文件地址,全路径
     * @param rootName xml根名 "<root></root>"则 rootName 是 root
     * @param attrName 属性
     */
    private Map<String, Element> readXml(String filepath, String rootName, String attrName) throws Exception {
        Map<String, Element> map = new TreeMap<>();
        SAXReader reader = new SAXReader();
        // InputStream resourceAsStream = AttrParseTest.class.getResourceAsStream("/attrs.xml");
        // Document document = reader.read(resourceAsStream);
        File file = new File(filepath);
        Document document = reader.read(file);
        // <resources>
        Element resources = document.getRootElement();
        List<Element> attrElements = resources.elements();
        for (Element attrElement : attrElements) {
            List<Attribute> attrs = attrElement.attributes();
            for (Attribute attr : attrs) {
                if (attrName.equals(attr.getName())) {
                    map.put(attr.getValue(), attrElement);
                }
            }
        }
        return map;
    }
Matlab:比较 XML 文件 阅读详情

相关推荐

XML文档比较工具

《XML文档比较工具》(A7Soft ExamXML PRO)v5.15[压缩包]

dom4j对xml比较完整的操作

最近写的插件用到了dom4j,来读写,修改文档。用到的功能都写出来了下面包含了两个程序 WriteFriendsInfo,和 ReadFriendsInfo。 1.WriteFriendsInfo 包含了新建xml和修改,删除xml节点的方法 一些要点:    WriteFriendsInfo 中修改节点采用的方式是删除节点,然后把新的节点写进去。在不对读写要求很大的情况下,这样做

jayexx123的专栏 637

xmldiffs:比较两个XML文件,忽略元素和属性的顺序

xmldiffs 在语义上比较XML文件,而忽略元素和属性的顺序。 用法: xmldiffs [OPTION] FILE1 FILE2 任何其他选项都将传递给diff命令。 它是如何工作的? xmldiffs首先解析每个XML文件,然后将它们按元素(标签)名称和属性排序。 然后将结果传递给diff进行语义XML比较。

分别使用dom和dom4j解析XML文档

分别使用dom和dom4j解析XML文档

CoderX(远离Bug)的博客 1719

XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细XML的四种解析器原理及性能比较,超详细

Jenkins中文显示不全?三步搞定Locale插件+汉化包的正确安装姿势

本文针对Jenkins界面中文显示不全问题,提供从原理到实战的深度解决方案。文章详细解析了Locale插件与中文语言包的核心机制,并分步指导如何通过配置JVM环境、正确安装插件及执行深度排查,彻底解决汉化顽疾,实现Jenkins界面的完美中文显示。

weixin_42611310的博客 259

判断两个XML文件结构与内容是否相同

1. 引入   目前公司的这款软件导入导出数据库信息的方法是:组织数据的内容和结构 利用MS com的sax解析 储存数据为XML格式     优点是可以选择部分导出     缺点是速度慢文件导出的文件庞大,若客户出现导入导出错误要重现或者调试困难   由于软件持续更新所以不同版本的,XML有差异   现客户需求将高版本的软件导出成 低版本XML,保证从任何高版本导出的文件 与...

weixin_30731305的博客 631

Chromatix 7实战:从零开始调优ISP模块的完整流程(附常见报错解决方案)

本文提供了高通平台Camera调试工具Chromatix 7的完整实战指南。详细阐述了从环境准备、项目初始化、基础校正(如LSC、BPC)到核心ISP管线(Demosaic、CCM、HDR)及后处理(CAC、ANR)的调优全流程,并附带了常见报错(如“未初始化实例”)的解决方案,旨在帮助工程师建立系统性的调试方法论。

weixin_29290863的博客 623

DOM4J中Document的操作

---------------------------------------DOM4J中Document的操作--------------------------------Document操作 (*****) 1 遍历students.xml  涉及的相关方法:l  Element getRootElement():Document的方法,用来获取根元素;l  List elements():...

李昆鹏的博客 1万+

华为防火墙双ISP出口实战:如何用策略路由实现电信联通流量自动切换(附配置截图)

本文详细解析了华为防火墙在双ISP环境下的智能选路技术,通过策略路由与健康检测的深度应用,实现电信联通流量的自动切换。文章包含实战配置截图,帮助企业解决切换延迟、路径劣化等核心挑战,提升业务连续性。

backprop5master的博客 643

C# : 计算并输出这一天是这一年的第几天

C#之输入某年,然后输入某月,再输入某日,计算并输出这一天是这一年的第几天的功能算法

saitoDeng的博客 970

简单使用dom4j对xml文件进行输出操作(如何使用dom4j对xml文件进行输出)

上一篇已经介绍了如何使用dom4j对xml进行读取解析,现在谈谈怎么使用dom4j操作xml文件的输出。 首先去下载个DOM4J的jar包,以下两个网站选一个吧,下载后导入项目 http://www.jdom.org/docs/apidocs/index.html www.jdom.org 代码实现过程如下: import java.io.FileWr

小询的博客 1386

[cryoEM] cryoSPARC简介

cryoSPARC系统结构概述 cryoSPARC是一个后端和前端高性能计算软件系统,为单颗粒冷冻电镜提供数据处理和图像分析能力,以及丰富的基于浏览器的用户截面和命令行工具。 Master-worker模式 系统基于主用户模式。 主进程(web应用,核心应用程序和MongoDB数据库)一起在主节点上运行。主节点需要相对轻量级的资源(2+ CPU< 16GB+ RAM)。 工作程序进程可以在具有GPU的任何可用节点上生成,负责所有实际计算和数据处理,并由主节点调度。注意:同一节点可以同时充当主节点和辅

进阶中的程序员吃吃的博客 7797

使用Dom4j解析XML文件

使用Dom4j解析XML文件

junR_980218的博客 5652

手把手教你用RTD2775QT/RTD2795QT打造4K便携屏:从芯片选型到Type-C一线通实战

本文详细介绍了如何利用RTD2775QT和RTD2795QT显示驱动芯片打造4K便携屏的全过程,包括芯片选型、硬件设计、固件烧录及Type-C一线通实战方案。特别针对新手常见问题提供了解决方案,帮助读者高效完成DIY项目,提升移动办公体验。

weixin_42520025的博客 718

Linux ARM平台开发系列讲解(GPIO子系统) 2.3.2 GPIO子系统常用函数解析

1. 概述 该章节会记录一年常用的GPIO子系统常用函数,会更具情况不断更新 static inline int gpio_get_value(unsigned int gpio) 功能 :用于获取某个GPIO引脚上的值 gpio : gpio引脚号 返回值:非负值,得到的 GPIO 值;负值,获取失败。 static inline void gpio_set_value(unsigned int gpio, int value) static inline int gpio_cansleep(unsi

DSMGUOGUO的博客 669

【DOM4J】Java中使用 DOM4J解析XML文件,解析Mybatis Mapper xml文件思路。

/这里相当于进入了Select标签元素内部break;break;// 添加注释break;以上对整个XML做了一个遍历,第一个for循环是对xml总体做了一个遍历,而内部则是开始获取的内容,这里通过。

RudolphLiu的博客 2213

【YOLOv11多模态涨点改进】独家创新首发 | TGRS 2025 | 引入CDFIM跨模态差异特征交互模块,通过差异特征提取和融合增强机制,减少了冗余信息,显著提升了小目标的检测精度,高效涨点改进

🔥本文给大家介绍使用 CDFIM跨模态差异特征交互模块改进 YOLOv11多模态目标检测,通过有效的差异特征提取和增强,显著提升了小目标的检测精度,特别是在复杂背景和低对比度环境下。该模块通过残差加法和通道与空间注意力机制,增强了可见光与红外模态之间的互补特征交互,减少了冗余信息,提高了检测稳定性。尽管提升了特征交互,CDFIM 仍保持轻量化设计,计算开销和参数量较低,适合实时检测应用。总的来说,CDFIM 模块在保留原始模态信息的同时优化了特征融合,有效提高了 YOLO 在多模态目标检测中的鲁棒性和精度

Ai缝合怪、助力小伙伴高效发论文 131

java用dom4j对XML文件读取并追加内容

基于之前写的文章:如何用dom4j创建XML文件并写入节点 进行优化处理。 主要是增加对于文件是否存在的判断,看一个dome: public class xml{ public static void saveXml( ) throws DocumentException { String path=StaticValue.ApplicationPath + "/ReportS...

qq_39704682的博客 1853

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java解析XML文件(DOM4J解析xml文件)

实现通过DOM4J技术解析XML配置文件,修改xml配置信息,创建xml文件及信息。通过dom4j技术模拟解析web.xml文件的过程。

雾林小妖的博客 2833

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用dom4j解析xml文件,并封装为javabean对象

dom4j是一个java的XML api,性能优异、功能强大、易于使用。这里使用dom4j对xml文件进行解析,并完成对文件的封装。 实现对xml文件的解析,主要使用到的是dom4j中的SAXReader类,该类的使用方法如下: SAXReader 类 //构造SAXReader SAXReader sr = new SAXReader(); //加载文件

Well's Column 6313

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用DOM4j输出xml文档

模拟输出一组信息数据 用数组模拟要保存的数据 //保存信息的数组 int[] id = new int[]{1,2,3}; String[] names = new String[]{"maoshu","lose","Houce"}; String[] sexs = new String[]{"男","女","男"};

青椒盖饭的博客 892

(二)使用Dom4j对XML文件进行解析

目录1、XML解析概念2、Dom4j解析过程 1、XML解析概念 XML解析技术:   HTML和XML都是标记型文档,可以使用W3C组织制定的DOM技术来解析。(DOM把所有标签表示为对象) dom4j解析技术:   早期JDK提供了两种方式对XML进行解析,分别是DOM和SAX,目前已经不使用。 第三方解析:   dom➡jdom,   jdom➡dom4j,   pull主要用在Android手机开发,是和sax类似为事件机制解析xml文件。 2、Dom4j解析过程   使用dom4j解析XML文件,

面条有点辣 6751

使用Dom4j创建一个XML文件

以创建下面样式的xml为例 xml version="1.0" encoding="UTF-8"?> users>   user name="tom">26.5user>   user name="jack" id="0001">126.5user>   user name="ody">95.5user>   school name="cslg" id="01">常熟理工学院schoo

Raine's blog 3854

使用DOM4J读取xml

----------------------------------使用DOM4J读取xml-------------------------------------DOM4J概述 1 DOM4J是什么DOM4J是针对Java开发人员专门提供的XML文档解析规范,它不同与DOM,但与DOM相似。DOM4J针对Java开发人员而设计,所以对于Java开发人员来说,使用DOM4J要比使用DOM更加方便...

李昆鹏的博客 4971

Java使用Dom4J方式解析XML文件

一 dom4j介绍 使用方式:在pom.xml中导入dom4j对应的jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> 优点:dom4j使Java生成和解析XML灵活性变高,并且代码易于.

浩瀚星空,法力无边;其大无外,其小无内。 1560
上一篇: 使用redis或雪花算法生成全局id
下一篇: 使用docker创建一个服务器并用ssh登录
who7708
博客等级 码龄16年 8粉丝 35原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值