DOM4J Element.attributes()。containsAll()返回意外值

时间:2011-01-10 20:00:21

标签: java dom4j

我使用DOM4J来分析两个XML元素。要素如下:

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

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

这两个元素都存储在org.dom4j.Element个实例e1e2中。

我希望这两个元素具有相同的属性,所以我希望:

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

返回true,但实际上会返回false

当我检查这两个属性时,我找到以下字符串表示:

org.dom4j.tree.DefaultAttribute@552c8fa8 [Attribute: name attr value "val"]

org.dom4j.tree.DefaultAttribute@26d58939 [Attribute: name attr value "val"]

我错过了一些明显的东西吗?除了编写我自己的containsAll函数来检查这种行为之外,你还能想到我应该尝试的其他任何东西吗?

1 个答案:

答案 0 :(得分:4)

我相信你必须自己编写containsAll()。您看到的是默认List.containsAll(),它会使用equals()来比较项目。由于DefaultAttribute doesn't override equals()会将您的比较评估为true,所以您运气不佳。