如何使用java和xmlunit比较两个名称空间相同但前缀不同的xml?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (214)

有2个xml文件:

问题出在属性前缀中

<element xmlns:prefix1="namespace" prefix1:attribute="some value">Some text</element>


<element xmlns:prefix2="namespace" prefix2:attribute="some value">Some text</element>

这两个xml是相同的,具有相同的命名空间,但具有不同的前缀。如果我与xmlunit比较 - >断言失败。我该怎么处理?

在类似()或相同()比较的情况下,有错误:

预期的属性名称'message:MessageNameString'但是'null' 预期的属性名称'message:MessageVersion'但是'null' 预期的属性名称'null'但是'mes:MessageNameString' 预期的属性名称'null'但是'mes': MessageVersion”

提问于
用户回答回答于
// identical
XMLAssert.assertXMLEqual(XMLUnit.compareXML(control, test), true)
// similar
XMLAssert.assertXMLEqual(XMLUnit.compareXML(control, test), false)
用户回答回答于

以下测试通过“类似”检查但未通过“相同”检查:

    String control = "<prefix1:element xmlns:prefix1=\"namespace\" prefix1:attribute=\"x\">Some text</prefix1:element>";
    String test = "<prefix2:element xmlns:prefix2=\"namespace\" prefix2:attribute=\"x\">Some text</prefix2:element>";
    try
    {
        Diff diff = XMLUnit.compareXML( control, test );
        assertTrue( "Similar", diff.similar() );
        assertTrue( "Identical", diff.identical() );
    }
    catch ( Exception e )
    {
        fail( e.getMessage() );
    }

来自xmlunit API文档:

  • 相同:文档中节点的内容和顺序完全相同
  • 类似:文档中节点的内容是相同的,但存在细微差别,例如兄弟元素的排序,名称空间前缀的值,隐含属性值的使用

所以使用“类似”检查应该给你你想要的

编辑:添加前缀属性,结果相同。

扫码关注云+社区

领取腾讯云代金券