使用XMLUnit(Java)比较包含实体的XML字符串

问题描述 投票:0回答:1

JDK 1.7.0 XMLUnit 1.3

比较此控件XML字符串时:

            String controlXml = "" +
                "<client>" +
                "   <name>Hello&nbsp;World</name>" +
                "</client>";

使用此测试XML字符串:

            String testXml = "" + 
                "<client>" +
                "   <name>Hello&nbsp;World</name>" +
                "</client>";

XMLUNIT返回false,我希望它返回true(没有差异)。

这是我的用法:

XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
Diff diff = new Diff(controlXml,testXml);
boolean result = diff.similar(); //result is false

我在控制台窗口中也收到以下错误:

[Fatal Error] :1:103: The entity "nbsp" was referenced, but not declared.

我不知道该怎么做。

我调查了一下,我得到了一些关于使用谷歌的EntityResolver的信息,但这一切都让人非常困惑。

我需要将实体视为纯文本。逻辑上,作为纯文本,它们是平等的。

我尝试使用以下选项切换:

        XMLUnit.setExpandEntityReferences(false);  //tried true, false
        XMLUnit.setIgnoreDiffBetweenTextAndCDATA(false);  //tried true, false

没有任何效果。请帮忙,我完全迷失了。谢谢!

java xml entity entities xmlunit
1个回答
0
投票

似乎字符实体()和数字实体()之间存在差异。

XMLUnit与数字实体相比没有问题,而不是字符实体。

我认为一个简单的字符 - 实体 - 数字 - 实体程序应该足以解决我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.