Ich bin ein Grails-Neuling, der an einem Projekt zum Spaß arbeitet. Ich bin eine Klasse wie diese Serialisierung:Konvertieren von XML zu Domänenobjekt in Grails
def msg = (listing as XML).toString()
die versucht, eine Klasse deserialisieren mit der XMLSlurper wie folgt aus:
def root = new XmlSlurper().parseText(listingString)
def sellerNode = root.seller
Ich versuche, dieses Objekt zu rekonstruieren:
Listing{
Date dateCreated
String description
Date endDateTime
String name
Float startingPrice
Customer winner
static hasMany = [bids: Bid] // B-4
static belongsTo = [seller: Customer]
}
}
von diesem 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>
Zuerst habe ich Probleme mit den Werten jedes Knotens. Ich habe def Verkäufer = neuer Kunde versucht (Name: VerkäuferNode. @ Benutzername), aber das funktioniert nicht, da ich annehme, dass @username ein Attribut und kein Element sein muss. Zweitens, muss ich dieses XML "von Hand" analysieren? Gibt es keinen besseren Weg, dieses XML automatisch zu deserialisieren?
Ich habe mir schon ein paar Posts angeschaut und auch dieses: Import XML into a Grails Domain Class aber wie Sie sehen können, hat meine XML keine Attribute wie die XML in diesem Post. automatisch
Danke,
@atylor: Danke für die Antwort. Ich hatte noch keine Gelegenheit das zu versuchen. Ich werde es heute Abend tun und morgen zu dir kommen. – Buzzer
Weitere Details finden Sie unter http://grails.org/doc/2.2.4/guide/webServices.html - suchen Sie nach "parseRequest" und Sie werden so etwas finden: '"/product/$ id "(controller:" Produkt ", parseRequest: true)' – Jason