4

我正在为使用 JDOM 读写 XML 的代码编写单元测试。因此,我需要一些方法来将我的代码生成的 JDOMElement与引用进行比较,Element以确保它们是等价的(相同的名称、命名空间和属性,加上其子级的相同,递归地)。

不幸Element.equals的是,只测试元素是否引用相等。如何最好地确定两个元素是否代表相同的树?

4

2 回答 2

3

下面应该检查两个 XML 元素是否等效:

String myElementString = XMLOutputter.outputString(myElement);
String testElementString = XMLOutputter.outputString(testElement);
boolean equals = myElementString.Equals(testElementString);
于 2011-09-10T20:15:34.233 回答
1

我只能想到三种方式:

  1. 使用 Element 的可公开访问字段手动创建代码以进行比较。
  2. 使用 Java 反射创建代码以枚举 Element 的字段并比较它们。浅层或深层比较取决于您的需要。
  3. 使用 xxxOutputter 类之一来输出每个 Element 并比较输出。例如,从每个元素创建一个 XML 字符串org.jdom.output.XMLOutputter并比较字符串。

都相当恶心!

于 2011-09-10T20:12:52.703 回答