可以有一個人幫我生成在單個註釋使用EclipseLink MOXy @XmlPath支持具有不同值的元素,例如<控股ID = 「ID1」 SRC = 「6」 R = 「1」>
的EclipseLink @XmlPath
MOXY標籤<Pty ID="ID1" Src="6" R="1">
。
非常感謝。
可以有一個人幫我生成在單個註釋使用EclipseLink MOXy @XmlPath支持具有不同值的元素,例如<控股ID = 「ID1」 SRC = 「6」 R = 「1」>
的EclipseLink @XmlPath
MOXY標籤<Pty ID="ID1" Src="6" R="1">
。
非常感謝。
我不確定我有你的要求是否正確,但這是我認爲你想要做的一個回答。
IdAdapter
你可以寫一個XmlAdapter
價值單個ID轉換成具有多種特性的對象。這些其他屬性將使用默認值進行設置。
package forum11965153;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class IdAdapter extends XmlAdapter<IdAdapter.AdaptedId, String> {
public static class AdaptedId {
@XmlAttribute(name="ID") public String id;
@XmlAttribute(name="Src") public String src = "6";
@XmlAttribute(name="R") public String r = "1";
}
@Override
public AdaptedId marshal(String string) throws Exception {
AdaptedId adaptedId = new AdaptedId();
adaptedId.id = string;
return adaptedId;
}
@Override
public String unmarshal(AdaptedId adaptedId) throws Exception {
return adaptedId.id;
}
}
控股
的@XmlJavaTypeAdapter
註釋用於指定XmlAdapter
。要將值摺疊到根元素中,請使用MOXy的@XmlPath(".")
註釋(請參閱:http://blog.bdoughan.com/2010/07/xpath-based-mapping.html)。
package forum11965153;
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlRootElement(name="Pty")
@XmlAccessorType(XmlAccessType.FIELD)
public class Pty {
@XmlJavaTypeAdapter(IdAdapter.class)
@XmlPath(".")
String id;
}
jaxb.properties
如你所知,指定莫西爲您的JAXB提供者,你需要包括在同一個包中的以下項域模型稱爲jaxb.properties
文件(見: http://blog.bdoughan.com/search/label/jaxb.properties)
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
演示
下面的演示代碼可以用來證明一切正常:
package forum11965153;
import java.io.StringReader;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Pty.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StringReader xml = new StringReader("<Pty ID='ID1' Src='6' R='1'/>");
Pty pty = (Pty) unmarshaller.unmarshal(xml);
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(pty, System.out);
}
}
輸出
下面是輸出從運行演示代碼:
<?xml version="1.0" encoding="UTF-8"?>
<Pty ID="ID1" Src="6" R="1"/>
你能更新你的問題包括您的域模型的外觀? – 2012-08-15 15:26:01
我需要使用EclipseLink MOXY'@ XmlPath'生成FIXML,如下所示。 系統只有基於ID值的單個標籤的ID值, 我需要爲Src和R屬性設置默認值。 ' <子ID = 「ID3」 典型值= 「2」/> <控股ID = 「ID2」 SRC = 「1」 R = 「2」> <子ID = 「ID4」 典型值=「79228162514264337593543950335 「/> –
Sreeman
2012-08-16 04:13:16