我有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比较 - &gt;断言失败。我怎么处理呢?
在类似()或相同()比较的情况下我有错误:
预期的属性名称&#39;消息:MessageNameString&#39;但是&#39; null&#39;
预期的属性名称&#39;消息:MessageVersion&#39;但是&#39; null&#39;
预期的属性名称&#39; null&#39;但是&#39; mes:MessageNameString&#39;
预期的属性名称&#39; null&#39;但是&#39; mes:MessageVersion&#39;
答案 0 :(得分:6)
以下测试通过“类似”检查但未通过“相同”检查:
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文档:
因此,使用“类似”检查可以为您提供所需的内容。
编辑:添加了前缀属性,结果相同。
答案 1 :(得分:0)
// identical
XMLAssert.assertXMLEqual(XMLUnit.compareXML(control, test), true)
// similar
XMLAssert.assertXMLEqual(XMLUnit.compareXML(control, test), false)
答案 2 :(得分:0)
使用XMLUnit 1.x:
// Similar
XMLAssert.assertXMLEqual()
// Identical
XMLAssert.assertXMLIdentical()
使用XMLUnit 2.x:
import static org.xmlunit.assertj.XmlAssert.assertThat;
...
// Similar
assertThat(xmlResult).and(xmlExpected).areSimilar();
// Identical
assertThat(xmlResult).and(xmlExpected).areIdentical();
请参见https://github.com/xmlunit/xmlunit#comparing-two-documents