2015-11-17 4 views
1

У меня есть JSon документа, как это:Преобразование JSON в XML с пространством имен и токенов в Scala

{"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))

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

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, но он изменяет как открытый, так и закрытый тег; бросая ошибку.

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

ответ

0

Мне удалось получить пространство имен 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)