比较 XML 时如何忽略某些元素?

2023-12-07

我有一条 XML 消息,如下所示:

<root>
  <elementA>something</elementA>
  <elementB>something else</elementB>
  <elementC>yet another thing</elementC>
</root>

我想将测试中的方法生成的这种类型的消息与预期的消息进行比较,但我不关心elementA。因此,我希望上述消息被视为等于:

<root>
  <elementA>something different</elementA>
  <elementB>something else</elementB>
  <elementC>yet another thing</elementC>
</root>

我正在使用最新版本XMLUnit.

我想答案涉及创建一个自定义DifferenceListener;如果有现成的东西可用,我只是不想重新发明轮子。

欢迎提出使用 XMLUnit 以外的库的建议。


我最终实现了DifferenceListener它采用节点名称列表(带有命名空间)来忽略文本差异:

public class IgnoreNamedElementsDifferenceListener implements DifferenceListener {
    private Set<String> blackList = new HashSet<String>();

    public IgnoreNamedElementsDifferenceListener(String ... elementNames) {
        for (String name : elementNames) {
            blackList.add(name);
        }
    }

    public int differenceFound(Difference difference) {
        if (difference.getId() == DifferenceConstants.TEXT_VALUE_ID) {
            if (blackList.contains(difference.getControlNodeDetail().getNode().getParentNode().getNodeName())) {
                return DifferenceListener.RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
            }
        }

        return DifferenceListener.RETURN_ACCEPT_DIFFERENCE;
    }

    public void skippedComparison(Node node, Node node1) {

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

比较 XML 时如何忽略某些元素? 的相关文章

  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • 如何在spring mvc中从控制器名称+操作名称获取映射的URL?

    是否有现有的解决方案可以从 Spring MVC3 中的 控制器名称 操作名称 获取映射的 URL 例如 asp net mvc 或 Rails 中的 UrlHelper 我觉得非常有用 thx 也许 你想要这样的东西 in your Co
  • 如何使用 SimpleDateFormat 解析多种格式的日期

    我正在尝试解析文档中的一些日期 用户似乎以类似但不完全相同的格式输入了这些日期 以下是格式 9 09 9 2009 09 2009 9 1 2009 9 1 2009 尝试解析所有这些内容的最佳方法是什么 这些似乎是最常见的 但我想让我困扰
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 逃离的正确方法是什么?使用 Oracle 12c MATCH_RECOGNIZE 时 JDBCPreparedStatement 中的字符?

    以下查询在 Oracle 12c 中是正确的 SELECT FROM dual MATCH RECOGNIZE MEASURES a dummy AS dummy PATTERN a DEFINE a AS 1 1 但它不能通过 JDBC
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • Swift 中使用 POST 方法进行 HTTP 请求

    我正在尝试在 Swift 中运行 HTTP 请求 将 2 个参数 POST 到 URL Example Link www thisismylink com postName php Params id 13 name Jack 最简单的方法
  • Swift 中 UITextView 和 UITextField 的单一扩展

    我想创建一个扩大对彼此而言UITextField and UITextView并向其中添加以下方法 func addDoneButtonOnKeyboardWith selector Selector let keyBoardToolBar
  • 使用 JavaScript 将秒转换为 HH-MM-SS?

    如何将秒转换为HH MM SS使用 JavaScript 字符串 您可以借助 JavaScript Date 方法在没有任何外部 JavaScript 库的情况下做到这一点 如下所示 const date new Date null dat
  • PostgreSQL Last_value 忽略空值

    我知道已经有人问过这个问题 但为什么下面的解决方案不起作用 我要填value最后一个非空值的排序方式为idx 我所看到的 idx coalesce 1 2 2 4 3 4 5 10 5 rows 我想要的是 idx coalesce 1 2
  • 使用 shell_exec('passwd') 更改用户密码

    我需要能够通过网页 在受控环境中 更改用户的密码 因此 为此 我使用以下代码 我的问题是该脚本没有更改用户 testUser 的密码 我究竟做错了什么 Thanks 另一种选择是使用一个 shell 脚本 比如名为 passwd chang
  • 在 C# 中使用 newtonsoft 查找并返回 JSON 差异?

    我想获得使用 Newtonsoft 进行比较时不匹配的 JSON 部分的列表 我有这个比较代码 JObject xpctJSON JObject Parse expectedJSON JObject actJSON JObject Pars
  • 编译静态版QT + OpenSSL 支持

    我从这里下载了 qt everywhere opensource src 5 8 0 的源文件 https download qt io snapshots qt 5 8 5 8 0 latest src 我想编译它并支持静态版本的 QT
  • 自动重命名视频文件

    我有很多文件想要重命名 手动重命名需要很长时间 它们是视频文件 通常采用以下格式 节目名称 剧集编号 剧集名称 例如 绝命毒师 101 Pilot 我想做的是将 101 部分更改为我自己的约定 S01E01 我认为在一系列节目中 该字符串的
  • 无法在 Windows 中安装 Pylint - python?

    我是Python新手 我在Windows上安装了Python 位于以下目录中C Program Files Python36 我在用vscode当我尝试在 IDE 中运行以下命令时integrated terminal C Program
  • 使用 HTML 和 CSS 在第一个打印页面上显示不同的页眉

    是否可以使用 HTML 和 或 CSS 的任意组合在第一个标题上显示一个标题printed页面然后显示不同的每个后续的标题printed页 我知道关于 media printCSS 标记仅在打印站点时显示某些内容 但这并不能让我在多个页面上
  • 使用 javascript 移动元素

    使用 JavaScript 移动元素的最佳实践是什么 您使用超时或间隔吗 事件定时为 10 毫秒是不好还是会更精确 您是逐像素移动还是总距离的某一部分移动 如果使用间隔 当元素就位时如何停止间隔 我最近两次在 javascript 中看到运
  • Chris Banes 实施 ActionBar-PulltoRefresh、库错误等

    继我之前关于在我的项目中从 github 导入某个库的问题之后 我决定实现一个不同的库 但此时我遇到了很多错误 导入Android Listview通过pull刷新 项目属性错误 与 Google 目前使用 Chris Banes 的 Ac
  • 通过jQuery更改img src:图像不会刷新

    我正在尝试通过 Phonegap Build 应用程序中的 jquery 动态更改 src 如下所示 photo profile attr src fullPath one load function evt console log loa
  • 在带有 extrafont 包的 .eps 图中使用 Arial 时出错

    我在 R 中使用 ggplot2 为出版物生成图形 其中所有图形都需要为 eps 格式 所有字体都需要为 Arial 我一直在关注本指南使用 extrafont 包来做到这一点 据我了解 该行loadfonts device postscr
  • 使用 java 访问嵌套 JSON 对象值

    files f1 png intext A inval 0 inbinary false f2 png intext A inval 0 inbinary true 当f1 png值不固定时如何访问inval的值 即文件名可以是任何名称 它
  • 从 Windows 服务启用/禁用 Aero

    我有一些代码可以在 Vista 中启用 禁用 Windows Aero 服务 并且我想在 Windows 服务中运行它 该代码在独立应用程序中运行 但是当我从服务运行它时 什么也没有发生 不会引发任何错误或异常 我意识到在服务中运行代码与在
  • 使用 ScalaTest 时出现 java.lang.NoSuchFieldError

    我在使用 ScalaTest 时遇到了一个很难调试的错误 奇怪的是 当我的程序没有 Main 对象时 似乎会发生这种情况 但当它有 Main 对象时 却不会发生这种情况 我的代码实际上只是使用带有多态方法的类型类从列表中获取切片 看起来像这
  • 一个用户数据库为多个应用程序数据库提供服务

    我正在管理一个相当大的数据库 该数据库的复杂性和设计都从单个应用程序数据库开始增长 现在计划添加第五个应用程序 该应用程序带有自己的模式和特定数据 我一直在研究 SSO 解决方案 但这并不是我真正想要的 我的目标是拥有一个客户注册 登录和授
  • 使用 Coldfusion SpreadsheetWrite 和 cfscript 创建多个工作表

    我想使用 CF9 SpreadsheetWrite 和 cfscript 创建一个包含两张表的 Excel 文件 就像是 var data spreadsheetNew data var key spreadsheetNew key spr
  • 比较 XML 时如何忽略某些元素?

    我有一条 XML 消息 如下所示