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

标签 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 函数来检查此行为之外,您还能想到我应该尝试的其他方法吗?

最佳答案

我相信您必须编写自己的containsAll()。您将看到默认的 List.containsAll(),它使用 equals() 比较项目。自 DefaultAttribute doesn't override equals() 使您的比较结果为 true,您运气不好。

关于java - DOM4J Element.attributes().containsAll() 返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650907/

相关文章:

java - 两个不同程序之间的事件处理

java - 实现通用顶点和边类

java - 如何离线使用dom4j SAXReader?

java - DOM4J 解析不返回任何子节点

java - DOM4J 选择子节点

Java 数字验证

java - 在Java中,以下语句等同于什么?

java - 通用类型参数的 T、U、V 约定从何而来?

java - java获取dom4j中的属性值

java - 在 dom 树的第一个 child 之前添加一个新节点