我希望将我们项目的jaxb版本从1更新到2。有没有人在他们的项目上尝试过这样做,有没有任何人想要这样做的提示?我知道每个项目都是独一无二的,我只是在寻找一般提示。 最佳答案 JAXB2将为简单类型限制生成枚举类。任何依赖于设置字符串值以使用这些类型的Java代码都将要求您改用适当的枚举。我认为这很棒,因为您会在编译时进行类型检查,而不是在运行时收到验证警告。JABX2使用类型化列表而不是非类型化列表,因此您可以从Java代码中删除大量转换。大大改进了日期支持。IIRC,JAXB1中的大多数日期类型生成日历,而在JAXB2中它们生成X
我正在尝试使用JAXB(2.1.12)编码一个具有DataHandler字段的对象。对于流式支持,DataHandler使用@XmlAttachmentRef注释。通过Web服务(JBoss上的Metro)进行序列化和流式传输工作正常,但使用JAXB进行简单编码却不行。这是一个精简的例子:publicclassDataHandlerAttachmentSerialization{@XmlRootElementstaticclassRootObject{@XmlElement@XmlAttachmentRef//Workswithoutthis,butrequiredforstreami
我正在尝试了解如何自定义由JAXB2.1.12生成的方法名称。我有一个史诗般的XML模式(不在我的控制范围内),它包含一个组,其中一个选择元素包含大约200个其他元素。因此,当我生成JAXB类时,创建的get()方法毫无用处-它最终变成类似于“getElement1AndElement2AndElement3()”的东西。我想将get()方法重命名为更好的名称,但我不知道该怎么做。我知道在thetutorial它描述了通过在元素上使用自定义类名。我发现了一篇非常古老的文章(http://onjava.com/pub/a/onjava/2003/12/10/jaxb.html?page=
我的XML架构文件中有一组复杂类型。基本上我有一堆“响应”对象。每个响应对象都遵循相同的通用格式,但采用更具体的方式。所以,例如:我想让它有一个“子类”成为可能,其中“transition”和“ResponseBlock”被替换为每种类型的有效“子类”。IE。我已经通过限制/扩展派生了它们,并希望将它们包含在本身由限制派生的响应中:这样,使用JAXB,我可以生成一个完全面向对象的继承结构。但它似乎没有编译;Eclipse显示错误:derivation-ok-restriction.5.4.2:“IDResponse”类型错误。类型的粒子不是基粒子的有效限制。rcase-Recurse.
我想从我的对象创建xml,但我想创建属性而不是xml节点,即@XmlRootElementclassMyObject{privateStringname;privateStringage;...getters/setters...}我希望我的对象创建这个xml:我该怎么做? 最佳答案 您可以使用@XmlAttribute注释映射到XML属性。@XmlRootElement@XmlAccessorType(XmlAccessType.FIELD)classMyObject{@XmlAttribute//MapstoanXMLattri
我试图让JAXB将标记的内容捕获到JavaBean的某些属性中。这是XML消息的示例:Thedescriptionfollows我为这个XML消息提出了以下JavaBean,但我发现很难映射电影的描述。@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name="Film")@XmlRootElement(name="Film")publicclassFilm{@XmlAttribute(name="Id")publicIntegerid;@XmlAttribute(name="Title")publicStringtitle;@XmlAttr
我有一个XML源,我从中使用JAXB解码对象。XML来源:something003030someone...Java源代码是这样的(还有所需的getter/setter):@XmlRootElement(name="album")classAlbum{Stringname;Longid;Stringartist;...}到目前为止一切顺利。现在我在相册列表中得到了一些不同大小的图片url:...http://.../small.jpghttp://.../medium.jpghttp://.../large.jpg...我想将它映射到像这样的javaMap:MapimageUrls;m
我正在将一个项目从jaxb1.0迁移到2.1。当使用jaxb2.1(通过antxjc任务)从xsd生成类时,生成的类缺少没有任何内容的元素,如下所示:....但是当元素确实有内容时会生成文件,如下所示:为什么会这样?先前生成的一组类(使用jaxb1.0)包含所有元素的类,而不仅仅是那些有内容的类。如何让jaxb生成这些缺失的类?我真的无权更改xsd(但如果确实有必要,我可以这样做)。 最佳答案 好消息是您不需要生成“缺失类”,我将在下面通过示例进行演示。schema.xsd下面是您的XML架构的简化版本。福JAXB(JSR-222)
如何重新排列我的xml元素:---1JamesLecture3000收件人:-3000-Lecture-1James是关于如何排列它们,使得不能展开的元素总是在可以展开的元素之上。我在java中使用JAXB编码来转换我的对象以生成xml文件。 最佳答案 在你正在解码的类中使用proporder应该有助于解决这个问题例如@XmlType(propOrder={"courseCode","CourseType"})注意:当使用propOrder时,对象中的所有元素都必须添加到propOrder。
我知道我可以使用@XmlSchema来做到这一点,但问题是我们在同一个包中有一个类需要其命名空间与package-info.java上定义的不同。所以我们改为在@XmlRootElement中声明命名空间(当然同时仍然有@XmlSchema)。但是这样做将不允许我们设置类的elementFormDefault。将类移动到不同的包不是一种选择。基本上,我只想覆盖这个特定类的命名空间。 最佳答案 长话短说当elementFormDefault=XmlNsForm.QUALIFIED在@XmlSchema上设置时,您可以通过使用@XmlT