1
我有這兩個模型。 AssetMetadata:jaxb解組與其他類屬性
@XmlRootElement(name="AssetMetadata")
public class AssetMetadata {
private AssetMetadataType assetMetadataType;
private String id;
private String assetId;
....
AssetMetadataType:
@XmlRootElement(name = "AssetMetadataType")
public class AssetMetadataType {
private String id;
private String name;
....
我使用JAXB解組這樣的。 Spring配置:
<oxm:jaxb2-marshaller id="marshaller">
<oxm:class-to-be-bound name="ch.srf.esb.radioimporter.domain.AssetMetadata"/>
<oxm:class-to-be-bound name="ch.srf.esb.radioimporter.domain.AssetMetadataType"/>
</oxm:jaxb2-marshaller>
Java代碼:
@Autowired @Qualifier("marshaller") private Unmarshaller unmarshaller;
...
final InputStream is = new ByteArrayInputStream(xml.getBytes());
this.unmarshaller.unmarshal(new StreamSource(is));
現在,當我把下面的XML,該AssetMetadataType未設置:
<AssetMetadata>
<AssetMetadataType>
<id>1</id>
<name>EPG</name>
</AssetMetadataType>
<assetId>39b4864d-931b-40c6-85ad-c45251b97952</assetId>
<title>title</title>
<description>description</description>
</AssetMetadata>
我該怎麼辦錯了嗎?
謝謝您的回答。不幸的是,我得到了這個異常,然後:類有兩個同名的屬性「assetMetadataType」 – superbly 2012-01-16 10:52:09
好吧你是對的:我必須刪除AssetMetadata模型中的getAssetMetadataType()和setAssetMetadataType()方法。現在它工作。謝謝。 – superbly 2012-01-16 10:58:04
+1 - @shifty,你不需要刪除任何方法。只要確保你要麼註釋get方法,要麼註解字段(實例變量),然後設置@XmlAccessorType(XmlAccessType.FIELD):http://blog.bdoughan.com/2011/06/using-jaxbs- xmlaccessortype-to.html – 2012-01-16 11:17:19