我有这样的XML消息:
<root>
<elementA>something</elementA>
<elementB>something else</elementB>
<elementC>yet another thing</elementC>
</root>
Run Code Online (Sandbox Code Playgroud)
我想比较一个由测试方法产生的这种类型的消息与预期的消息,但我不在乎elementA.所以,我希望上述消息被认为是等于:
<root>
<elementA>something different</elementA>
<elementB>something else</elementB>
<elementC>yet another thing</elementC>
</root>
Run Code Online (Sandbox Code Playgroud)
我正在使用最新版本的XMLUnit.
我想象的答案涉及创造一个习俗DifferenceListener; 如果那里有可以使用的东西,我只是不想重新发明轮子.
建议使用XMLUnit以外的库.
我想在测试中比较两个xml字符串,但测试由于空格而一直失败.
@Test
public void testForEquality() throws Exception {
String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>";
String myTestXML = "<msg><uuid>0x00435A8C</uuid> </msg>";
assertXMLEqual(myControlXML, myTestXML);
Diff diff = new Diff(myControlXML, myTestXML);
assertTrue(diff.similar());
}
Run Code Online (Sandbox Code Playgroud) 支持我有两个xml字符串
<test>
<elem>a</elem>
<elem>b</elem>
</test>
<test>
<elem>b</elem>
<elem>a</elem>
</test>
Run Code Online (Sandbox Code Playgroud)
如何编写一个比较这两个字符串并忽略元素顺序的测试?
我希望测试尽可能短,没有10行XML解析等的地方.我正在寻找一个简单的断言或smt类似.
我有这个(不起作用)
Diff diff = XMLUnit.compareXML(expectedString, actualString);
XMLAssert.assertXMLEqual("meh", diff, true);
Run Code Online (Sandbox Code Playgroud) 我需要区分包含生成的.xml和.wsdl文件的大型目录结构.生成的.xml文件按子元素的显示顺序不同.XmlUnit Diff.similar()方法应该处理这种情况:
"如果两个文件包含相同的元素和属性,则无论顺序如何,都被视为"相似".
然而,事实并非如此.我拿了一个.xml文件,颠倒了两个子元素的顺序,XmlUnit说它们不相似.
XmlUnit已损坏,不提供比内置diff实用程序更多的功能.
是否有XmlUnit的替代方法可以识别.xml文件中的简单差异,例如子元素的排序?
我目前正在尝试使用XMLUnit库来比较两个XML文件.其中一个候选者是由我的Java Objects代码(使用JAXB)生成的,另一个是引用(我不能修改它).基本上我试图证明给定一个参考XML文件我可以反序列化它(使用Jaxb和我自己的一些类)然后将它序列化回另一个文件并仍然具有相同的内容.
该库似乎提供了我需要的服务,但是当生成的文件没有正确缩进时(以"漂亮打印"版本的形式),比较失败并且当缩进没有时它不会.例如,当生成候选者时没有缩进,内容是单行,如果缩进它正确(手动)比较是正常的.
这是XMLUnit生成的错误消息:
[不同]预期的子节点数'3'但是'1'
你们有什么想法解决这个问题吗?也许解决方案是生成一个漂亮的候选版本,在这种情况下你有想法将它与JAXB序列化器结合起来吗?
顺便说一句,如果你现在用Java比较好的XML文件解决方案,我会很高兴知道它;)
在此先感谢您的帮助.
我试图看看我是否可以使用XMLUnit来比较以下两个不同的XML.我使用Diff类来比较以下两个XML并检查类似的返回false.
XML One
<Required>
<Question desc="Are you single?">
<Answers>
<Answer value="Yes"/>
<Answer value="No"/>
</Answers>
</Question>
</Required>
XML Two
<Required>
<Question desc="Are you single?">
<Answers>
<Answer value="No"/> ''Order is reversed in XML two
<Answer value="Yes"/>
</Answers>
</Question>
</Required>
Run Code Online (Sandbox Code Playgroud)
这是我的JAVA代码:
Diff xmlDiff;
try {
xmlDiff = new Diff(xmlOne, xmlTwo);
xmlDiff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
} catch (Exception e) { }
boolean isEqual = xmlDiff.similar()
Run Code Online (Sandbox Code Playgroud) 我目前正在使用XMLUnit,我想知道是否有办法将其配置为仅忽略id我想要比较的标签的属性.
在此先感谢您的帮助.
我有几个单元测试,我需要确保方法生成的XML包含与预期的Xml文档相同的元素/值.
我在Java中使用了xmlunit,虽然它们有.net版本但它似乎不支持命名空间.在.net中有没有替代方法呢?
只要我可以比较2个Xml字符串并得到一个真/假的结果告诉我它们是否匹配,只要涉及到的数据,我很高兴...
我有2个xml文件:
问题出在属性前缀中.
<element xmlns:prefix1="namespace" prefix1:attribute="some value">Some text</element>
<element xmlns:prefix2="namespace" prefix2:attribute="some value">Some text</element>
Run Code Online (Sandbox Code Playgroud)
这两个xml是相同的,具有相同的命名空间,但具有不同的前缀.如果我与xmlunit比较 - >断言失败.我该怎么处理?
在类似()或相同()比较的情况下,我有错误:
预期的属性名称'message:MessageNameString'但是'null'
预期的属性名称'message:MessageVersion'但是'null'
预期的属性名称'null'但是'mes:MessageNameString'
预期的属性名称'null'但是'mes': MessageVersion"
我有一个使用XmlUnit的应用程序来获取两个XML文件的差异.但问题是XmlUnit使用JDOM.我的xml文件大约1GB!
将这些xml存储在JDOM文档中需要太多RAM.
我曾尝试使用SlimJDOMFactory但仍使用太多内存!
实际上我需要在XML文件中向前和向后导航.没有JDOM,我发现没有简单的方法.
有人可以帮忙吗?
以下是我如何构建JDOM文档的代码示例:
private org.jdom2.Document refDocJdom2;
private org.jdom2.Document resDocJdom2;
SAXBuilder sxb = new SAXBuilder();
sxb.setJDOMFactory(new SlimJDOMFactory());
popmsg("Validating reference file...");
try {
refDocJdom2 = sxb.build(referenceXML_Path);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error while parsing Reference : "+referenceXML_Path+" file.\nCheck XML file validity.");
return;
}
popmsg("Reference file validated");
popmsg("Validating result file....");
try {
resDocJdom2 = sxb.build(resultXML_Path);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error while parsing result "+resultXML_Path+" file.\nCheck XML file validity.");
return;
}
popmsg("Result file validated");
popmsg("Validation Done.");
getDifferencies(referenceXML_Path, resultXML_Path); …Run Code Online (Sandbox Code Playgroud) xmlunit ×10
java ×8
xml ×7
junit ×3
unit-testing ×2
.net ×1
compare ×1
heap-memory ×1
jaxb ×1
jdom ×1
namespaces ×1
nunit ×1