私のxiスキーマのroot.classでは、要素itemオブジェクトとohterオブジェクトはitemListの一部です。
@XmlElementRef(name = "item", namespace = "xi", type = JAXBElement.class, required = false)
//...
protected List<Object> itemList;
私はObjectFactory.class
メインスキーマから次のようなJAXBElementsとしていくつかのアイテムを持っています:
@XmlElementDecl(namespace = "de-schema", name = "detailedInformation", substitutionHeadNamespace = "xi", substitutionHeadName = "item")
public JAXBElement<numItemType> createDetailedInformation(numItemType num) {
return new JAXBElement<numItemType>(_detailedInformation_QNAME, numItemType.class, null, num);
}
したがって、numItemTypeには、のいくつかの属性とvalue(num)がありJAXBElement
ます。
NumItemType.class:
@XmlJavaTypeAdapter(numItemTypeAdapter.class)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "numItemType", namespace = "xi", propOrder = {
"num"
})
public class NumItemType {
@XmlValue
protected BigDecimal num;
@XmlAttribute(name = "precision")
protected String precision;
@XmlAttribute(name = "decimals")
protected String decimals;
//... more Attributes
}
ただしJAXB
、ドキュメントを非整列XML
化すると、次のような要素のみが含まれます。
<detailedInformation>
<element1>1234</element1>
<element2>5678</element2>
<element3>bla</element3>
</detailedInformation>
私がそれをマーシャリングすると、それは(JAXB javaコードのように)次のようになるはずです:
<detailedInformation element2="5678" element3="bla">1234</detailedInformation>
したがって、NumItemTypeAdapterを使用してnumItemTypeAdapter.classを記述し、XmlAdapterを拡張しました。
AdaptedNum.class:
public class AdaptedNum {
@XmlElement
private double element1;
@XmlElement
private String element2;
@XmlElement
private String element3;
/** Some getter/setter methods */
}
http://blog.bdoughan.com/2012/02/xmlanyelement-and-xmladapter.html助けになると思いましたが、少し注意が必要です:-/