我是JAXB的初学者,当用xjc生成Java类时,我遇到了恼人的问题。 我提供了一个像这样的XSD: <xs:element name="item" type="itemType"/> … <xs:complexType name="itemType"> <xs:attribute name="id" type="xs:string" use="required"> … </xs:complexType> 而xjc正在生成一个名为ItemType.java的类,但是我希望这个名字是Item.java 。 也就是说,我想要生成的类,就好像XSD是这样的: <xs:element name="item"> <xs:complexType> <xs:attribute name="id" type="xs:string" use="required"> … </xs:complexType> </xs:element> 在任何其他元素上都不会有任何itemType的重用,只是构造XSD的人喜欢这种方式。 我想可能有办法做到这一点与自定义绑定,但我还没有find如何。 任何帮助? 谢谢米格尔
我目前正在处理大多数types和元素都有<xsd:annotation> / <xsd:documentation>的XML模式。 当我从这个XML Schema生成Java Beans时,那些Bean的Javadoc只包含一些关于types/元素的允许内容的通用生成信息。 我希望在相关位置看到<xsd:documentation>标记的内容(例如,为了表示该complexType而生成的类的Javadoc中将显示该types的标记的内容)。 有没有办法做到这一点? 编辑 :这个XML Schema将用于带有JAX-WS的WSDL,所以这个标签也可能是合适的。 编辑2 :我读过关于<jxb:javadoc> 。 根据我的理解,我可以在单独的JAXB绑定文件中指定,也可以直接在XML模式中指定。 这几乎可以解决我的问题。 但是我宁愿使用现有的<xsd:documentation>标记,因为Javadoc不是文档的主要目标(主要是关于数据结构的信息,而不是关于由它生成的Java Bean的信息),并允许非JAXB工具也可以访问这些信息。 在<jxb:javadoc>和xsd:documentation> “感觉”是错误的,因为我没有很好的理由重复数据(和工作)。 编辑3 :感谢Pascal的回答,我意识到我已经有了一半的解决scheme: complexType的<xsd:documentation>被写入到它的Javadoc的开头! 问题仍然是只使用complexType s和simpleType s(这也可能导致类),而元素仍然是Javadoc-less。
我想将caching引入到现有的使用JAXB公开Web服务的Spring项目中。 高速caching将在终点级别完成。 为了做到从XSD使用JAXB生成的类需要实现Serializable接口并重写Object的toString()方法。 如何使用XSD指示xjc工具生成具有所需属性的源代码?
我目前正在使用JAXB生成Java类,以解组XML。 现在我想创build一个与第一个类似的新模式,并且生成的类实现相同的接口。 举例来说,我有两个模式文件,它们用相似的标签来定义XML: adult.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:element name="Person"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Age" type="xs:integer" /> <xs:element name="Job" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> kid.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:element name="Person"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Age" type="xs:integer" /> <xs:element name="School" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> 使用JAXB和XJC我想生成两个类文件: public class Adult implements Person […]
我试图从FpML(Finanial产品标记语言)版本4.5生成Java类。 一吨代码生成,但我不能使用它。 试图序列化一个简单的文件,我得到这个: javax.xml.bind.MarshalException – with linked exception: [com.sun.istack.SAXException2: unable to marshal type "org.fpml._2008.fpml_4_5.PositionReport" as an element because it is missing an @XmlRootElement annotation] 实际上没有类有@XmlRootElement注解,那么我可能做错了什么? 我将xjc(JAXB 2.1)指向fpml-main-4-5.xsd,然后包含所有types。