DOM4J Element.attributes().containsAll() 返回意外值
我正在使用 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
函数来检查此行为之外,您还能想到我应该尝试的其他方法吗?
I am using DOM4J to do analysis of two XML elements. The elements are the following:
<element1 attr="val">text</element1> //org.dom4j.Element = e1
and
<element1 attr="val">OtherText</element1> //org.dom4j.Element = e2
Both of these elements are stored in org.dom4j.Element
instances, e1
and e2
.
I expect that both of these elements have the same attributes, so I expect that:
e1.attributes().containsAll(e2.attributes())
returns true
, but it actually returns false
.
When I inspect both of these attributes, I find the following string representations:
org.dom4j.tree.DefaultAttribute@552c8fa8 [Attribute: name attr value "val"]
and
org.dom4j.tree.DefaultAttribute@26d58939 [Attribute: name attr value "val"]
Am I missing something obvious? Beyond writing my own containsAll
function to inspect this behavior, can you think of anything else I should try?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信您必须编写自己的
containsAll()
。您将看到默认的List.containsAll()
,它使用equals()
比较项目。由于 DefaultAttribute 不会覆盖equals()
以使您的比较结果为true
,那么您就不走运了。I believe you'll have to write your own
containsAll()
. You're seeing the defaultList.containsAll()
, which compares items usingequals()
. Since DefaultAttribute doesn't overrideequals()
to make your comparison evaluate totrue
, you're out of luck.