我正在使用 DOM4J 来分析两个 XML 元素。要素如下:
<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
。
当我检查这两个属性时,我发现以下字符串表示形式:
org.dom4j.tree.DefaultAttribute@552c8fa8 [Attribute: name attr value "val"]
和
org.dom4j.tree.DefaultAttribute@26d58939 [Attribute: name attr value "val"]
我是否遗漏了一些明显的东西?除了编写我自己的 containsAll
函数来检查此行为之外,您还能想到我应该尝试的其他方法吗?
最佳答案
我相信您必须编写自己的containsAll()
。您将看到默认的 List.containsAll()
,它使用 equals()
比较项目。自 DefaultAttribute doesn't override equals()
使您的比较结果为 true
,您运气不好。
关于java - DOM4J Element.attributes().containsAll() 返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650907/