我正在使用DOM4J来分析两个XML元素。元素如下:
<element1 attr="val">text</element1> //org.dom4j.Element = e1
和
<element1 attr="val">OtherText</element1> //org.dom4j.Element = e2
这两个元素都存储在
org.dom4j.Element
和e1
实例中。我希望这两个元素都具有相同的属性,所以我希望:
e1.attributes().containsAll(e2.attributes())
返回
e2
,但实际上返回true
。当我检查这两个属性时,发现以下字符串表示形式:
org.dom4j.tree.DefaultAttribute@552c8fa8 [Attribute: name attr value "val"]
和
org.dom4j.tree.DefaultAttribute@26d58939 [Attribute: name attr value "val"]
我是否缺少明显的东西?除了编写自己的
false
函数以检查此行为之外,您还能想到我应该尝试的其他方法吗? 最佳答案
我相信您必须编写自己的containsAll()
。您会看到默认的List.containsAll()
,它使用equals()
比较项目。由于DefaultAttribute doesn't override equals()
使您的比较评估为true
,因此您很不走运。