Java jUnit比较XML字符串失败,即使XML相同

Java jUnit比较XML字符串失败,即使XML相同,java,xml,servlets,junit,Java,Xml,Servlets,Junit,我正在编写一系列jUnit测试,以确保我的代理Servlet能够从各种来源获取客户端页面的XML 我的一个测试向servlet发送一个请求以获取XML,然后将其与相同的本地副本进行比较(我认为) 我检查了每个XML的长度,这非常有趣 本地副本长度=1753 远程版本长度=1796 我只是在使用assertTrue() 有没有办法在jUnit中对XML进行比较,以确保它们符合预期且语法正确 欢迎任何其他建议?关于比较XML的更好方法的问题-我以前使用过,并且觉得效果很好。关于比较XML的更好方法的

我正在编写一系列jUnit测试,以确保我的代理Servlet能够从各种来源获取客户端页面的XML

我的一个测试向servlet发送一个请求以获取XML,然后将其与相同的本地副本进行比较(我认为)

我检查了每个XML的长度,这非常有趣

本地副本长度=1753

远程版本长度=1796

我只是在使用assertTrue()

有没有办法在jUnit中对XML进行比较,以确保它们符合预期且语法正确


欢迎任何其他建议?

关于比较XML的更好方法的问题-我以前使用过,并且觉得效果很好。

关于比较XML的更好方法的问题-我以前使用过,并且觉得效果很好。

问题很可能是您有不同的换行符,类似于一个字符串中的
\n
,另一个字符串中的
\n\r
。在比较字符串之前,可以删除所有换行符:

s1 = s1.replace("\n", "").replace("\r", "");
s2 = s2.replace("\n", "").replace("\r", "");
assertEquals(s1, s2); // should evaluate to true now

问题很可能是您有不同的换行符,例如一个字符串中有
\n
,另一个字符串中有
\n\r
。在比较字符串之前,可以删除所有换行符:

s1 = s1.replace("\n", "").replace("\r", "");
s2 = s2.replace("\n", "").replace("\r", "");
assertEquals(s1, s2); // should evaluate to true now

字符串中可能有不同的换行符,例如一个时间
\n\r
和另一个字符串中的
\n
?如果XML中有43行是有意义的:)尝试解组两个XML并比较解组对象。@baraky;我不熟悉解组的这个概念。字符串中可能有不同的换行符,比如一个时间
\n\r
和另一个字符串中的
\n
?如果XML中有43行是有意义的:)尝试解组两个XML并比较解组对象。@baraky;我不熟悉这种解组的概念