Как я могу сравнить два элемента на эквивалентность? - PullRequest
4 голосов
/ 10 сентября 2011

Я пишу модульные тесты для кода, который использует JDOM для чтения и записи XML. Поэтому мне нужен какой-то способ сравнить JDOM Element, создаваемый моим кодом, со ссылкой Element, чтобы убедиться, что они эквивалентны (то же самое имя, пространство имен и атрибуты, а также то же самое для его дочерних элементов, рекурсивно).

К сожалению, Element.equals только проверяет, равны ли элементы ссылочно. Как я могу наилучшим образом определить, представляют ли два элемента идентичные деревья?

Ответы [ 2 ]

3 голосов
/ 11 сентября 2011

Следующее должно проверить, эквивалентны ли два элемента XML:

String myElementString = XMLOutputter.outputString(myElement);
String testElementString = XMLOutputter.outputString(testElement);
boolean equals = myElementString.Equals(testElementString);
1 голос
/ 11 сентября 2011

Я могу думать только о трех направлениях:

  1. Вручную создайте код для сравнения, используя общедоступные поля Element.
  2. Создание кода с использованием отражения Java для перечисления полей Элемента и сравнения их всех. Неглубокое или глубокое сравнение зависит от ваших потребностей.
  3. Используйте один из классов xxxOutputter для вывода каждого элемента и сравнения выходных данных. Например. создайте XML-строку из каждого элемента с org.jdom.output.XMLOutputter и сравните строки.

Все довольно отвратительно!

...