2011-01-10 5 views
0

Я использую DOM4J для анализа двух XML-элементов. Элементы являются следующие:DOM4J Element.attributes(). ContainsAll() возвращает неожиданное значение

<element1 attr="val">text</element1> //org.dom4j.Element = e1 

и

<element1 attr="val">OtherText</element1> //org.dom4j.Element = e2 

Оба эти элемента хранятся в org.dom4j.Element случаях, e1 и e2.

Я ожидаю, что оба этих элемента имеют одинаковые атрибуты, так что я ожидаю, что:

e1.attributes().containsAll(e2.attributes()) 

возвращается true, но это на самом деле возвращает false.

Когда я осмотреть оба этих атрибутов, я нахожу следующие строковые представления:

[email protected] [Attribute: name attr value "val"] 

и

[email protected] [Attribute: name attr value "val"] 

Я пропускаю что-то очевидное? Помимо написания моей собственной функции containsAll, чтобы проверить это поведение, можете ли вы придумать что-нибудь еще, что я должен попробовать?

ответ

4

Я считаю, что вам нужно будет написать свой собственный containsAll(). Вы видите значение по умолчанию List.containsAll(), которое сравнивает элементы, используя equals(). С DefaultAttribute doesn't overrideequals(), чтобы сравнить его с true, вам не повезло.