MOXy @XmlPath 被忽略
Posted
技术标签:
【中文标题】MOXy @XmlPath 被忽略【英文标题】:MOXy @XmlPath ignored 【发布时间】:2011-08-22 09:05:20 【问题描述】:我有一个非常简单的类,它有两个字段,String sourceAddress 和 int port。 我希望它们映射到源/地址和源/端口节点而不是 jaxb 默认的 sourceAddress 和 sourcePort。 所以我使用 MOXy @XmlPath 注释。 问题是注释被忽略了,我得到了“jaxb default”xml文件:
<szk>
<sourceAddress>test</sourceAddress>
<sourcePort>10000</sourcePort>
</sz>
提前感谢您的帮助 阿戈斯蒂诺
导入 javax.xml.bind.*; 导入 javax.xml.bind.annotation.*; 导入 org.eclipse.persistence.jaxb.JAXBContext; 导入 org.eclipse.persistence.oxm.annotations.XmlPath; @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) 公共课 SZK @XmlPath("源/地址") 私有字符串源地址; @XmlPath("源/端口") 私有 int 源端口; 公共静态 void main (String [] args) 抛出 JAXBException SZK k = 新 SZK(); k.sourceAddress = "测试"; k.sourcePort = 10000; javax.xml.bind.JAXBContext jc = JAXBContext.newInstance(SZK.class); 编组器 m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.marshal(k, System.out);【问题讨论】:
您好,感谢您提出这个问题。实际上,我也在尝试做类似的事情,但由于某种原因,它没有按预期工作。我也尝试了这个答案中提到的东西。我尝试了这种方法和作者博客中的示例,但JAXB Marshalling
仍然无法按预期使用@XmlPath
。似乎使用和不使用 @XmlPath
生成的 XML 是相同的。请您查看此示例并提供您的答案:***.com/questions/67500565/…
【参考方案1】:
此问题的最可能原因是您缺少 jaxb.properties
文件以指定应将 EclipseLink MOXy 用作 JAXB 提供程序。 jaxb.properties
文件必须与您的域模型放在同一个包中,并包含以下条目:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
更多信息:
http://bdoughan.blogspot.com/2011/05/specifying-eclipselink-moxy-as-your.html http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html http://bdoughan.blogspot.com/2011/03/map-to-element-based-on-attribute-value.html【讨论】:
很荣幸直接从“来源”回答:-)。是的,缺少 jaxb.properties 文件。我对这些文件进行了更多测试,以确认每个包可以有不同的提供者。好的,直到我尝试使用 JAXBContext.newInstance(pkg1.C1.class, pkg2.C2.class) 编组来自不同包的类...但这是一个非常高级的问题。 如果您使用的是 maven,则值得在文件系统上检查您的目标/类.... 以获取属性文件。以防万一 maven 设置为不将文件复制到目标中 @Derek 这个评论应该被突出显示,我浪费了 2 天的时间,解决方案隐藏在这两行中。 Maven 只是简单地排除了目标中的属性文件。确保 jaxb.properties 在 maven 编译后仍然存在。 关于 Derek 的注释:就我而言,它不仅仅是 Maven,它也是我的 IDE。 facepalm 我的时刻。 @bdoughan 您好,感谢您提出这个问题。实际上,我也在尝试做类似的事情,但由于某种原因,它没有按预期工作。我也尝试了这个答案中提到的东西。我尝试了这种方法和作者博客中的示例,但JAXB Marshalling
仍然无法按预期使用@XmlPath
。似乎使用和不使用 @XmlPath
生成的 XML 是相同的。请你看看这个例子并提供你的答案:***.com/questions/67500565/…以上是关于MOXy @XmlPath 被忽略的主要内容,如果未能解决你的问题,请参考以下文章