标签: xmlunit

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

我有这样的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以外的库.

java xml junit xmlunit

30
推荐指数
4
解决办法
3万
查看次数

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)

java junit xmlunit

29
推荐指数
2
解决办法
8263
查看次数

比较两个忽略元素顺序的XML字符串

支持我有两个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)

java junit unit-testing xmlunit

22
推荐指数
3
解决办法
3万
查看次数

有没有XmlUnit的替代品?

我需要区分包含生成的.xml和.wsdl文件的大型目录结构.生成的.xml文件按子元素的显示顺序不同.XmlUnit Diff.similar()方法应该处理这种情况:

"如果两个文件包含相同的元素和属性,则无论顺序如何,都被视为"相似".

然而,事实并非如此.我拿了一个.xml文件,颠倒了两个子元素的顺序,XmlUnit说它们不相似.

XmlUnit已损坏,不提供比内置diff实用程序更多的功能.

是否有XmlUnit的替代方法可以识别.xml文件中的简单差异,例如子元素的排序?

xml xmlunit

15
推荐指数
2
解决办法
6142
查看次数

XMLUnit - Xml文件缩进会影响比较

我目前正在尝试使用XMLUnit库来比较两个XML文件.其中一个候选者是由我的Java Objects代码(使用JAXB)生成的,另一个是引用(我不能修改它).基本上我试图证明给定一个参考XML文件我可以反序列化它(使用Jaxb和我自己的一些类)然后将它序列化回另一个文件并仍然具有相同的内容.

该库似乎提供了我需要的服务,但是当生成的文件没有正确缩进时(以"漂亮打印"版本的形式),比较失败并且当缩进没有时它不会.例如,当生成候选者时没有缩进,内容是单行,如果缩进它正确(手动)比较是正常的.

这是XMLUnit生成的错误消息:

[不同]预期的子节点数'3'但是'1'

你们有什么想法解决这个问题吗?也许解决方案是生成一个漂亮的候选版本,在这种情况下你有想法将它与JAXB序列化器结合起来吗?

顺便说一句,如果你现在用Java比较好的XML文件解决方案,我会很高兴知道它;)

在此先感谢您的帮助.

java xml jaxb xml-serialization xmlunit

15
推荐指数
1
解决办法
3966
查看次数

XMLUnit - 比较两个忽略子顺序的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)

java compare xmlunit

9
推荐指数
1
解决办法
7034
查看次数

XMLUnit - 比较时忽略'id'属性

我目前正在使用XMLUnit,我想知道是否有办法将其配置为忽略id我想要比较的标签的属性.

在此先感谢您的帮助.

java xml xmlunit

9
推荐指数
2
解决办法
7561
查看次数

UnitTesting的.net Xml比较器

我有几个单元测试,我需要确保方法生成的XML包含与预期的Xml文档相同的元素/值.

我在Java中使用了xmlunit,虽然它们有.net版本但它似乎不支持命名空间.在.net中有没有替代方法呢?

只要我可以比较2个Xml字符串并得到一个真/假的结果告诉我它们是否匹配,只要涉及到的数据,我很高兴...

.net xml nunit unit-testing xmlunit

8
推荐指数
2
解决办法
1386
查看次数

如何使用java和xmlunit比较两个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"

java xml namespaces xmlunit

8
推荐指数
1
解决办法
5916
查看次数

JDOM使用太多内存

我有一个使用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)

java xml heap-memory jdom xmlunit

8
推荐指数
1
解决办法
1561
查看次数