私は楽しみのためにプロジェクトに取り組んでいる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>validguy@valid.com</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>validguy@valid.com</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>validguy@valid.com</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>validguy@valid.com</emailAddress>
<enabled>false</enabled>
<password>secret</password>
<passwordExpired>false</passwordExpired>
<username>validguy</username>
</winner>
</listing>
まず、各ノードの値を取得する際に問題が発生します。def Seller = new Customer(name:sellerNode。@ username)を試しましたが、@ usernameは要素ではなく属性である必要があると想定しているため、機能しません。次に、このxmlを「手動で」解析する必要がありますか?このxmlを自動的に逆シリアル化するためのより良い方法はありませんか?
私はすでにいくつかの投稿を見て、これを含めました:XMLをGrailsドメインクラスにインポート しますが、ご覧のとおり、私のxmlにはこの投稿のxmlのような属性がありません。
ありがとう、