我有一个非常简单的类,有两个字段,String sourceAddress和int port。
我希望它们映射到源/地址和源/端口节点而不是
jaxb默认的sourceAddress和sourcePort。
所以我使用MOXy @XmlPath注释。
问题是注释只是被忽略,我得到“jaxb默认”xml文件:
<szk>
<sourceAddress>test</sourceAddress>
<sourcePort>10000</sourcePort>
</sz>
提前感谢任何帮助 阿戈斯蒂诺
import javax.xml.bind.*; import javax.xml.bind.annotation.*; import org.eclipse.persistence.jaxb.JAXBContext; import org.eclipse.persistence.oxm.annotations.XmlPath; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SZK { @XmlPath("source/address") private String sourceAddress; @XmlPath("source/port") private int sourcePort; public static void main (String [] args) throws JAXBException{ SZK k = new SZK(); k.sourceAddress = "test"; k.sourcePort = 10000; javax.xml.bind.JAXBContext jc = JAXBContext.newInstance(SZK.class); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.marshal(k, System.out); } }
答案 0 :(得分:6)
此问题的最可能原因是您缺少jaxb.properties
文件以指定EclipseLink MOXy应该用作JAXB提供程序。 jaxb.properties
文件必须与域模型放在同一个包中,并包含以下条目:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
更多信息: