使用JAXB& amp解组Java数据类型。 Groovy的

时间:2016-01-03 21:13:13

标签: java xml groovy jaxb unmarshalling

我是JAXB的新手并试图将JAXB类中的数据类型映射到它们的Java等价物,但它总是坚持要返回一个字符串。

给出以下XML:

var hbs = require('express-hbs');
/*
...
*/
app.engine('hbs', hbs.express4({
  partialsDir   : __dirname +'/views/partials',
  defaultLayout : __dirname +'/views/layouts/default',
  extname       : '.hbs',
  layoutsDir    : __dirname +'/views/layouts',
}));

app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');

我们可以看到该类型是在<Response> <Label>shiftStartTime</Label> <Value>06:30</Value> <Type>Time</Type> </Response> 元素中声明的。我想要的是将值作为Joda Time LocalTime返回。

目前我的代码如下:

<Type>

我可以在调试器中看到getValue()方法中的代码正在运行,但结果总是作为&#39;字符串&#39 ;.返回。 我明显遗漏了一些东西,因为在JAXB中必须有一种方法来根据import org.joda.time.format.DateTimeFormat import org.joda.time.format.DateTimeFormatter import javax.xml.bind.annotation.XmlRootElement import javax.xml.bind.annotation.XmlElement import javax.xml.bind.annotation.XmlAccessorType import javax.xml.bind.annotation.XmlAccessType @XmlRootElement(name="ResponseGroup") @XmlAccessorType(XmlAccessType.FIELD) class Response { @XmlElement(name="Label") private String label @XmlElement(name="Value") private String value @XmlElement(name="Type") private String type DateTimeFormatter dateFormatter = DateTimeFormat.forPattern("dd/MM/yyyy"); DateTimeFormatter timeFormatter = DateTimeFormat.forPattern("HH:mm"); def stringTypes = ["GPS", "Static Text", "Multi-Line Text", "Value List", "Image Capture", "Signature", "Text Box"] def integerTypes = ["Integer"] def doubleTypes = ["Summary", "Calculation", "Decimal"] def timeTypes = ["Time"] def dateTypes = ["Date"] def booleanTypes = ["Checkbox"] public String getLabel() { return label } public String getType() { return type } def getValue(){ if(stringTypes.contains(this.type)){ return this.value.toString() } else if (integerTypes.contains(this.type)){ return this.value.toInteger() } else if (doubleTypes.contains(this.type)){ return Double.parseDouble(this.value) } else if (timeTypes.contains(this.type)){ return timeFormatter.parseLocalTime(this.value) } else if (dateTypes.contains(this.type)){ return dateFormatter.parseLocalDate(this.value) } else if (booleanTypes.contains(this.type)){ return this.value.toBoolean() } else { // Hoping for the best and returning a string return this.value.toString() } } } 元素映射Java类型。

0 个答案:

没有答案