2011-12-27 92 views
2

看来这应该是相当明显的,但我找不到任何关于如何简单地(un)编组也具有使用JAXB的属性的XML元素。如何在JAXB中解析/编组属性元素?

换句话说,我知道如何使用JAXB标注一起工作:

<element>foo</element> 

而且我知道如何使用JAXB有:

<element attribute1="bar" attribute2="foo" /> 

但我无法弄清楚如何以类似的方式:

<id_address href="/addresses/18">18></id_address_delivery> 
<id_cart href="/carts/111">111</id_cart> 
<id_currency href="/currencies/13">13></id_currency> 

感觉就像我应该能够做这样的事情(我使用JAXB从斯卡拉):

@XmlElement 
@BeanProperty 
var idAddress: XLink = _ 

@XmlElement 
@BeanProperty 
var idCart: XLink = _ 

@XmlElement 
@BeanProperty 
var idCurrency: XLink = _ 

,然后定义XLink为:

@XmlAccessorType(XmlAccessType.FIELD) 
class XLink { 

    @XmlAttribute 
    @BeanProperty 
    var href: String = _ 

    @Xml??? 
    @BeanProperty // ID is the container 
    var id: Long = _ 
} 

但显然这是不行的,因为id不应该是一个子元素 - 它只是父节点的值。

这是一个很常见的用例:我错过了什么?为了完整起见,我使用了Scala的JAXB(MOXy)。

回答

1

我想你想要@XmlValue

有关更多信息,请参见here

+0

非常感谢詹姆斯 - 这个作品很棒。对不起,在测试它的延迟! – 2012-01-13 21:21:23