私は、楽しいためにプロジェクトを進めているgrails初心者です。私はこのようなクラスをシリアル化しています:Grailsのxmlをドメインオブジェクトに変換する
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]
}
}
from this 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(名前:sellerNode。@ username)を試しましたが、@usernameは要素ではなく属性でなければならないと仮定しているため、これは機能しません。 第2に、このXMLを「手で」解析する必要がありますか?このxmlを自動的に非直列化するための良い方法はありませんか?
私はすでにいくつかの投稿を見て、これを含めて:Import XML into a Grails Domain Classしかし、私のxmlにはこの記事のxmlのような属性はありません。 XMLのソースはWebリクエストである場合
おかげで、
@atylor:返信ありがとうございます。私はこれをまだ試してみる機会がありませんでした。私は今夜こんなことをして、明日にあなたに行きます。 – Buzzer
詳細はhttp://grails.org/doc/2.2.4/guide/webServices.html - "parseRequest"を検索すると、次のようなものが見つかります: ''/product/$ id ''(コントローラ: product "、parseRequest:true)' – Jason