Я не знаком с antixml, однако, поскольку другого ответа нет, я попробую
Только для записи, ваш код возвращает
mayo
mustard
Точнее, строка начинается с пробела / новой строки между концом и началом первого. Пробелы между майонезом и горчицей - те, что находятся между двумя приправами, а пробелы после горчицы - те, что перед закрытием.
В antixml первое, что нужно сделать, это преобразовать ваше, что просто
val someAntiXml = someXML.anti
Получить часть приправы легко:
var condiments = someAntiXml \ 'condiments
Затем нужно извлечь текст. Похоже, что способ сделать это был
condiments \\ text
Но \\
не пересекает структуру по порядку, он выглядит как обход в ширину. Как следствие, пробелы, которые находятся только под приправами, предшествуют майо и горчице, которые на один уровень ниже, в элементах.
Итак, вот возможная реализация для извлечения текста. Может быть, есть более стандартный способ, но я не нашел его.
def textOf(g: Group[Node]) : String =
g.toList.map{
case Elem(_, _, _, _, children) => textOf(children)
case t: Text => t.text
case c: CDATA => c.text
case _ => ""
}.mkString
Тогда textOf(someAntiXml \ "condiments")
дает ожидаемый результат.