我有一些单元测试,我需要确保方法生成的XML包含与预期的Xml文档相同的元素/值。
我在Java中使用xmlunit,尽管它们有.net版本,但它似乎不支持命名空间。在.net中有没有替代方法呢?
只要我可以只比较2个Xml字符串并得到一个真/假的结果,告诉我它们是否匹配,只要涉及到的数据,我很高兴...
答案 0 :(得分:7)
我经常发现XNode.DeepEquals足以满足我的需求。它是BCL的一部分,因此无需下载。
答案 1 :(得分: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;
}
答案 2 :(得分:0)
我已经使用过MS的XMLDiff已经过去了,但是更喜欢使用Beyond Compare 3,因为它具有更好的GUI和批处理功能(尽管如此,还有.NET API)。
进行测试,使用XNode.DeepEquals或InnerXML比较基于字符串的表示