Scala XML Marshaling с использованием комбинатора из Scala GData - PullRequest
2 голосов
/ 01 октября 2011

Этот вопрос относится к этой теме , касающейся использования XML-комбинатора, который является частью клиентской библиотеки Google Scala gdata, найден здесь

  1. В опубликованном коде не было никакого параметра для elem («сегмента» ...). Разве это не заставило бы компилятор жаловаться на что-то вроде «не удалось найти неявное значение для параметра ns: (String, String) «

  2. Как генерировать элементы XML без добавления каждого префикса пространства имен для каждого тега. Например, сгенерированный код выглядит так:

    <yt:entry xmlns:yt="http://gdata.youtube.com/schemas/2007">
        <yt:title type="TextType">MyTitle</yt:title>
        <yt:summary>My Summary</yt:summary>
    </yt:entry>
    

Но я не хочу, чтобы у каждого тега был префикс пространства имен !! Как использовать комбинатор для генерации такого XML.

Вот как выглядит мой сборщик:

def pickler: Pickler[YtPlaylist] = {
    (wrap (elem("entry",
           elem("title", text ~ attr("type", text))
           ~ elem("summary", text))(Uris.ytNs))
          (YtPlaylist.apply)
          ({p => new ~(p.title, p.titleType) ~ p.summary}))
}

case class YtPlaylist(title: String, titleType: String, summary: String)

Пример, который я нашел в сети, не определяет пространство имен, но без него я всегда получаю ошибку компиляции. Как мне сгенерировать элементы XML без пространства имен ??

1 Ответ

0 голосов
/ 01 октября 2011

Да, вам нужно определить пространство имен. Используйте префикс null для определения пространства имен по умолчанию:

implicit val ns = (null: String, "http://gdata.youtube.com/schemas/2007")
...