Почему Scala XML-литералы чувствительны к пробелу между тегами?
Я обнаружил, что литералы XML Scala чувствительны к пробелу, что странно, не так ли? поскольку синтаксические анализаторы XML обычно не проклинают пробелы между тегами.
Это облом, потому что я хотел бы аккуратно указать свой код в моем коде:
<sample>
<hello />
</sample>
но Scala считает, что это значение отличается от
<sample><hello /></sample>
Доказательство находится в пудинге:
scala> val xml1 = <sample><hello /></sample>
xml1: scala.xml.Elem = <sample><hello></hello></sample>
scala> val xml2 = <sample>
| <hello />
| </sample>
xml2: scala.xml.Elem =
<sample>
<hello></hello>
</sample>
scala> xml1 == <sample><hello /></sample>
res0: Boolean = true
scala> xml1 == xml2
res1: Boolean = false
... Что дает?
Ответы
Ответ 1
Если вам понравилось, вы должны надеть на него обрезку:
scala> val xml1 = <sample><hello /></sample>
xml1: scala.xml.Elem = <sample><hello></hello></sample>
scala> val xml2 = <sample>
| <hello />
| </sample>
xml2: scala.xml.Elem =
<sample>
<hello></hello>
</sample>
scala> xml1 == xml2
res14: Boolean = false
scala> xml.Utility.trim(xml1) == xml.Utility.trim(xml2)
res15: Boolean = true
Ответ 2
Если вы хотите преобразовать литерал XML в StringBuilder
:
scala> val xml1 = <sample><hello /></sample>
xml1: scala.xml.Elem = <sample><hello></hello></sample>
scala> xml.Utility.toXML(xml1, minimizeTags=true)
res2: StringBuilder = <sample><hello /></sample>