Я новичок grails, работающий над проектом для развлечения. Я сериализация класса как это:Преобразование xml в объект домена в Grails
def msg = (listing as XML).toString()
пытается десериализация класса с помощью XMLSlurper так:
def root = new XmlSlurper().parseText(listingString)
def sellerNode = root.seller
Я пытаюсь восстановить этот объект:
Listing{
Date dateCreated
String description
Date endDateTime
String name
Float startingPrice
Customer winner
static hasMany = [bids: Bid] // B-4
static belongsTo = [seller: Customer]
}
}
от этого xml:
<?xml version="1.0" encoding="UTF-8"?>
<listing>
<bids>
<bid>
<amount>10.5</amount>
<bidder>
<accountExpired>false</accountExpired>
<accountLocked>false</accountLocked>
<dateCreated/>
<emailAddress>[email protected]</emailAddress>
<enabled>false</enabled>
<password>secret</password>
<passwordExpired>false</passwordExpired>
<username>validguy</username>
</bidder>
<dateCreated>2012-04-08 21:16:41.423 CDT</dateCreated>
<listing/>
</bid>
<bid>
<amount>10.0</amount>
<bidder>
<accountExpired>false</accountExpired>
<accountLocked>false</accountLocked>
<dateCreated/>
<emailAddress>[email protected]</emailAddress>
<enabled>false</enabled>
<password>secret</password>
<passwordExpired>false</passwordExpired>
<username>validguy</username>
</bidder>
<dateCreated>2012-04-08 21:16:41.415 CDT</dateCreated>
<listing/>
</bid>
</bids>
<dateCreated/>
<description>A test listing</description>
<endDateTime>2012-04-09 21:16:41.407 CDT</endDateTime>
<name>Default</name>
<seller>
<accountExpired>false</accountExpired>
<accountLocked>false</accountLocked>
<dateCreated/>
<emailAddress>[email protected]</emailAddress>
<enabled>false</enabled>
<password>secret</password>
<passwordExpired>false</passwordExpired>
<username>validguy</username>
</seller>
<startingPrice>10.0</startingPrice>
<wasNotificationSent>false</wasNotificationSent>
<winner>
<accountExpired>false</accountExpired>
<accountLocked>false</accountLocked>
<dateCreated/>
<emailAddress>[email protected]</emailAddress>
<enabled>false</enabled>
<password>secret</password>
<passwordExpired>false</passwordExpired>
<username>validguy</username>
</winner>
</listing>
Сначала у меня возникают проблемы с получением значений каждого узла. Я попробовал def seller = new Customer (name: sellerNode. @ Username), но это не работает, поскольку я предполагаю, что имя_пользователя должно быть атрибутом, а не элементом. Во-вторых, мне нужно разобрать этот xml «вручную»? Разве нет лучшего способа десериализовать этот xml автоматически?
Я уже рассмотрел несколько сообщений и в том числе этот: Import XML into a Grails Domain Class однако, как вы можете видеть, мой xml не имеет таких атрибутов, как xml в этом сообщении.
Спасибо,
@atylor: Спасибо за ответ. У меня еще не было возможности попробовать это. Я сделаю это сегодня вечером и доберусь до тебя завтра. – Buzzer
Подробнее о http://grails.org/doc/2.2.4/guide/webServices.html - найдите «parseRequest», и вы найдете что-то вроде этого: '/ product/$ id" (controller: " продукт ", parseRequest: true)' – Jason