0

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.

ここで何をすべきかわかりません。

私はそれを調べて、Googleを使用してEntityResolverに関するいくつかの情報を入手しましたが、それはすべて非常に混乱しています。

エンティティをプレーンテキストとして扱う必要があります。論理的には、プレーンテキストとして、それらは等しいです。

次のオプションを切り替えてみました。

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

何も機能しませんでした。助けてください、私は完全に迷子になっています。ありがとう!

4

1 に答える 1

0

文字エンティティ ( ) と数値エンティティ ( ) には違いがあるようです。

XMLUnit は、文字エンティティとは対照的に、数値エンティティには問題がありません。

私の問題を解決するには、単純な文字エンティティから数値エンティティへの手順で十分であると考えています。

于 2012-02-07T17:23:46.060 に答える