Конвертировать json в XML с пространством имен и токенами в Scala

У меня есть документ JSON, как это:

{"orderNumber": "12345",
"date": "11/05/2011",
"fromInventoryLocation": "New York",
"toLocation": "Los Angeles",
"shippingMethod": "Ground",
"shipDate": "11/25/2014",
"shipTo": "123 Main St.",
"Items": [
   {"item": "shirt", "quantity": "2", "orderPriority": "Standard"}, 
]}

Я инициализирую конвертер XStream:

val xstreamIB = xstream.XStreamConversions(new XStream(new DomDriver))

Я использую класс case Shipment для создания объекта и передачи его:

val xmlIB = xstreamIB.toXML(Shipment)

Выходной XML-файл возвращает:

<Shipment>
  <OrderNumber>12345</OrderNumber>
  <Date>11/05/2011</Date>
  <Address>
    <Street>123 Main St.</Street>
  </Address>
  <Etc>
    <Ex>...</Ex>
  </Etc>
</Shipment

Для получения API требуется 2 вещи. Пространство имен в открывающем теге Отправка; <Shipment xmlns="namespace">и токен в адресном теге; <Address type = "shipping">, Я пытался использовать.alias, но он изменяет открывающий и закрывающий теги; выкидывать ошибку.

Есть ли способ добавить пространство имен и токен в открывающие теги?

1 ответ

Решение

Я смог получить пространство имен xml, используя StaxDriver вместо DomDriver. Код ниже работал:

val qmap = new QNameMap
  qmap.setDefaultNamespace("urn:namespace")
  val xmlOut = xstream.XStreamConversions(new XStream(new StaxDriver(qmap)))
val xml = xmlOut.toXML(Shipment)
Другие вопросы по тегам