Почему литералы Scala XML чувствительны к пробелам между тегами? - PullRequest
14 голосов
/ 08 января 2011

Я обнаружил, что литералы Scala XML чувствительны к пробелам, что довольно странно, не правда ли?так как синтаксические анализаторы XML обычно не заботятся о пробелах между тегами.

Это облом, потому что я хотел бы аккуратно изложить свой 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

... Что дает?

Ответы [ 2 ]

16 голосов
/ 10 января 2011

Если вам понравилось, вы должны были поставить на него отделку:

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
0 голосов
/ 09 января 2011

Если вы хотите преобразовать литерал 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...