我经常需要测试
XML文件是否正确,并且需要一种方法来测试2个XML字符串(或文档)是否相同,例如:
XMLAssert.assertEquals(String xmlExpected,String xmlActual);
此外,显示xml文档的不同之处也很有用.
这应限于独立=“是”的文档(即DTD或模式 – 如果有的话 – 不重要).这意味着没有默认值,属性类型无关紧要.应对相邻文本PCDATA节点进行规范化(连接).
请注意,这不能通过词法比较来完成
Assert.assertEquals(xmlExpected,xmlActual);
因为有无限多种方式呈现相同的XML信息集.比较应考虑元素和属性的名称空间(但不考虑属性值 – 这不是规范的一部分).
一种方法可能涉及规范化两个文档.或者,可以使用XMLDiff.
我几年前找不到任何东西,所以写了我自己的东西.
[我也特别需要比较浮点值,虽然这必须是一个黑客,因为CDATA或PCDATA的数据类型只能被猜到并且不在问题的直接范围内.]
注意:可能需要为每种语言提供特定的解决方案.我对Java和C#特别感兴趣
对于Java,你应该检查
XMLUnit.我刚刚注意到它也带有.NET版本!以下是Java版本的示例:
String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>"; String myTestXML = "<msg><localId>2376</localId></msg>"; assertXMLNotEqual(myControlXML,myTestXML);