Из того, что я вижу, in_xml
и from_str
не равны, потому что порядок атрибутов отличается. Это прискорбно и из-за того, как компилятор создает XML. Это приводит к тому, что атрибуты будут разными:
scala> in_xml.attributes == from_str.attributes
res30: Boolean = false
Вы видите, что если вы замените атрибуты, сравнение сработает:
scala> in_xml.copy(attributes=from_str.attributes) == from_str
res32: Boolean = true
С учетом вышесказанного мне не ясно, почему это может вызвать другое поведение в коде, который заменяет атрибут href
. На самом деле я подозреваю, что что-то не так с тем, как работает отображение атрибутов. Например, если я заменю in_str
на:
val in_str = """<link type="text/css" rel="stylesheet" href="/css/main.css"
xmlns="http://www.w3.org/1999/xhtml"></link>"""
Работает нормально. Может ли быть так, что код атрибута от Даниэля работает, только если атрибут находится в позиции головы MetaData
?
Примечание: если in_xml
не равно null
, equals
и ==
не вернут одинаковое значение. Версия ==
проверит, является ли первый операнд нулевым, перед вызовом equals
.