我们使用JAXB来生成Java类,并遇到了一些生成的复数方法名称不正确的情况。 例如,我们期望getPhysicians我们得到getPhysicien 。 我们将如何定制JAXB如何将特定方法复数化? 架构: <xs:complexType name="physician"> <xs:sequence> … </xs:sequence> </xs:complexType> <xs:complexType name="physicianList"> <xs:sequence> <xs:element name="Physician" type="physician" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> 生成的Java代码: … public class PhysicianList { … @XmlElement(name = "Physician") protected List<Physician> physicien; … public List<Physician> getPhysicien() { if (physicien == null) { physicien = new ArrayList<Physician>(); } return this.physicien; } 更新 Blaise回答了这个问题。 但是,我更喜欢不在XML模式中混合关注如JAXB自定义。 […]
试图在这里通过一个类抛出exception: FooClass fooClass = (FooClass ) unmarshaller.unmarshal(inputStream); 抛出这个exception: java.lang.ClassCastException: javax.xml.bind.JAXBElement 我不明白这一点 – 因为这个类是由xjc.bat工具生成的 – 而且它生成的类我根本没有改变 – 所以在这里不应该有任何投射问题 – 反组织者应该真的给我一个类可以转换为FooClass。 任何想法,我做错了什么?
问题是关于JAXB Map marshalling – 有很多关于如何将Map映射成如下结构的例子: <map> <entry> <key> KEY </key> <value> VALUE </value> </entry> <entry> <key> KEY2 </key> <value> VALUE2 </value> </entry> <entry> … </map> 实际上,这是由JAXB本地支持的。 但是,我需要的是XML,其中键是元素名称,值是其内容: <map> <key> VALUE </key> <key2> VALUE2 </key2> … </map> 我没有成功实现我的地图适配器JAXB开发人员推荐的方式( https://jaxb.dev.java.net/guide/Mapping_your_favorite_class.html ),因为我需要,他 – dynamic属性名称:) 有没有解决scheme? PS目前我必须为每个典型的键值对创build一个专用的容器类,我想编组到XML – 它的工作原理,但我必须创造太多的这些辅助容器的方式。