8

メソッドによって生成された XML に、予想される Xml ドキュメントと同じ要素/値が含まれていることを確認する必要があるいくつかの単体テストがあります。

Java でxmlunitを使用しました。.netバージョンがありますが、名前空間をサポートしていないようです。これを行うための.net内の代替手段はありますか?

2 つの Xml 文字列を比較して true/false の結果を取得し、含まれているデータに関する限り一致するかどうかを教えてくれる限り、私は満足しています...

4

4 に答える 4

7

私は通常、XNode.DeepEqualsで十分であることがわかりました。これはBCLの一部であるため、ダウンロードは必要ありません。

于 2011-05-05T12:33:29.357 に答える
3

Microsoft.XmlDiffPatch を試してください:

static public bool IsXmlEqual( XmlReader x1, XmlReader x2,
    bool IgnoreChildOrder, bool IgnoreComments, bool IgnorePI, bool IgnoreWhitespace,
    bool IgnoreNamespaces, bool IgnorePrefixes, bool IgnoreXmlDecl, bool IgnoreDtd
)
{
    XmlDiffOptions options = XmlDiffOptions.None;
    if (IgnoreChildOrder) options |= XmlDiffOptions.IgnoreChildOrder;
    if (IgnoreComments) options |= XmlDiffOptions.IgnoreComments;
    if (IgnorePI) options |= XmlDiffOptions.IgnorePI;
    if (IgnoreWhitespace) options |= XmlDiffOptions.IgnoreWhitespace;
    if (IgnoreNamespaces) options |= XmlDiffOptions.IgnoreNamespaces;
    if (IgnorePrefixes) options |= XmlDiffOptions.IgnorePrefixes;
    if (IgnoreXmlDecl) options |= XmlDiffOptions.IgnoreXmlDecl;
    if (IgnoreDtd) options |= XmlDiffOptions.IgnoreDtd;

    XmlDiff xmlDiff = new XmlDiff(options);
    bool bequal = xmlDiff.Compare(x1, x2, null);
    return bequal;
}
于 2011-05-05T12:19:16.073 に答える
1

MSXML XMLDiff について留意すべきことは、非常に大きな XML ドキュメントを比較する場合は、「正確」に設定されていないことを確認してください。そうしないと、メモリ不足になる可能性がありXMLDiff.AlgorithmますAPI は、ファイル サイズ、検出された相違点の数、およびその他の要因に基づいて、Precise を使用するか Fast を使用するかを選択するため、デフォルトでは Auto に設定されています。これは安全な選択です。より技術的な傾向がある人向けの読み物は次のとおりです。

http://treepatch.sourceforge.net/report.pdf

于 2011-11-08T18:52:49.280 に答える
0

私は MS の XMLDiff を使用したことがありますが、Beyond Compare 3 の方が優れた GUI とバッチ処理機能を備えているため (.NET API はありません)、Beyond Compare 3 を使用することを好みました。

テストのために、XNode.DeepEquals または InnerXML を使用して文字列ベースの表現を比較します

于 2011-05-05T13:12:12.353 に答える