不区分大小写的XML比较

时间:2012-09-10 17:51:16

标签: .net xml uppercase lowercase

我有单元测试解决方案,它基本上比较了两个diff软件生成的两个xmls。

问题是一个xml有两个值n小写,另一个大写如下。

第一

<IsMirrored>False</IsMirrored>
<IsVariable>True</IsVariable>

第二次

<IsMirrored>false</IsMirrored>
<IsVariable>true</IsVariable>

我使用此方法来比较xml:

Assert.AreEqual(originalDoc.OuterXml, newDoc.OuterXml);

但由于小写和大写问题,它在比较值时返回false。我如何忽略该案例问题并仅比较价值?

编辑:还有一个问题

另一个问题是:如果有一个空元素:

第一

<LinkedObjectName></LinkedObjectName>

第二名:

<LinkedObjectName />

如果我执行Assert.AreEqual,它将通过字符检查进行字符处理,并在此处中断。

我该如何处理?

1 个答案:

答案 0 :(得分:0)

请勿使用Assert.AreEqual,使用Assert.IsTrueString.Equals

Assert.IsTrue(
    String.Equals(
        originalDoc.OuterXml, 
        newDoc.OuterXml, 
        StringComparison.CurrentCultureIgnoreCase))

修改

为了更加可靠地比较两个XML文档,您可以尝试使用Microsoft的XML Diff and Patch Tool。该工具尝试确定XML文档的内容是否相等,即使在简单的字符串比较失败的情况下,例如节点或属性的不同排序。