Scala的XML平等问题

我偶然发现了Scala中XML平等的一个特点:

scala> val x = <a>12</a>
x: scala.xml.Elem = <a>12</a>

scala> val y = <a>{1}2</a>
y: scala.xml.Elem = <a>12</a>

scala> x == y
res0: Boolean = false

我认为正在发生的事情是两个xml.Text对象正在创建,并且不同于一个。 但是,这不是它在XML规范中的作用:)我想知道是否有任何方法来比较相等性,以便这将返回true。

谢谢!


<a>12</a>表示具有单个子节点的值为“12”的元素,而<a>{1}2</a>表示具有两个子节点的元素,值为“1”和“2”。

它们在Scala中在逻辑上是可区分的: x.childArrayBuffer(12)y.childArrayBuffer(1, 2) ,因此它们不相等。

那么XML规范呢? 通过我的阅读,这两个XML对象是不相等的。 根据XML规范,元素的内容由一系列一个或多个东西组成(哪些DOM称为“节点”),这些东西可以是CharData。 因此,一个元素具有两个相邻的CharData子元是合乎逻辑的,这与逻辑上被认为不同于单个连接的CharData子元。

如果你真的想要考虑它们是平等的,你应该编写一个规范化过程,它接受一个XML对象并连接任何相邻的文本节点,然后执行相等性测试。

链接地址: http://www.djcxy.com/p/51631.html

上一篇: XML equality problem with Scala

下一篇: enter to trigger button click?