Tag: jaxb

JAXB 2的ObjectFactory类有什么意义?

我是使用JAXB的新手,我使用JAXB 2.1.3的xjc从我的XML Schema生成一组类。 除了为我的模式中的每个元素生成一个类之外,它还创build了一个ObjectFactory类。 似乎没有任何东西阻止我直接实例化元素,例如 MyElement element = new MyElement(); 而教程似乎更喜欢 MyElement element = new ObjectFactory().createMyElement(); 如果我看着ObjectFactory.java,我看到: public MyElement createMyElement() { return new MyElement(); } 那么交易是什么? 我为什么要打扰ObjectFactory类呢? 我认为如果我要从一个改变的模式重新编译,它也将被覆盖。

我如何实例化一个JAXBElement <String>对象?

我需要创build其中的一个接口需要它…有人请让我知道如何创build一个,因为似乎没有c'tor定义?

什么是JAXB,我为什么要使用它?

有人在这里发誓,JAXB是自切片面包以来最伟大的事情。 我很好奇Stack Overflow用户认为JAXB的用例是什么,以及是什么使它成为这种情况的好或坏的解决scheme。

如何从XSD生成JAXB类?

我是一个XML的总新手。 我正在做一个Java EE项目的REST实现,我们返回了很多的XML。 有了这个,我们决定使用JAXB。 到目前为止,我们手动编码XML的模型。 但是,已经有这些复杂的结构,我们不知道如何编码。 我们已经阅读了关于从XSD生成类。 我们有一个XSD。 我的问题: 1.)我已经阅读了关于xjc,我在哪里可以find它? 2.)我们是否需要安装整个JAXB? (所以到目前为止我们使用的是不是这个JAXB?)

java.util.Date和XMLGregorianCalendar之间的简单转换

我正在寻找一个简单的方法在java.util.Date和javax.xml.datatype.XMLGregorianCalendar之间转换。 这里是我现在使用的代码 : import java.util.GregorianCalendar; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; /** * Utility class for converting between XMLGregorianCalendar and java.util.Date */ public class XMLGregorianCalendarConverter { /** * Needed to create XMLGregorianCalendar instances */ private static DatatypeFactory df = null; static { try { df = DatatypeFactory.newInstance(); } catch (DatatypeConfigurationException dce) { throw new IllegalStateException( […]

使用JAXB从XMLstring创build对象

如何使用下面的代码将一个XMLstring映射到下面的JAXB对象? JAXBContext jaxbContext = JAXBContext.newInstance(Person.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Person person = (Person) unmarshaller.unmarshal("xml string here"); @XmlRootElement(name = "Person") public class Person { @XmlElement(name = "First-Name") String firstName; @XmlElement(name = "Last-Name") String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; […]

有没有可能以编程方式configurationJAXB?

假设我有两个JavaBeans Person和Address 。 如果我创build一个Person对象的列表,我想编组到这样的东西: <persons> <person>…</person> </persons> 可以使用这里描述的技术: 使用JAXB解组/编组一个List <String> 通过使用@XmlRootElement(name = "persons")和@XmlElement(name = "person")对@XmlRootElement(name = "persons")注释,可以编组上述XML。 但是,能够重用相同的JaxbList<T>类来编组Address对象列表也是很好的。 而实际上,我会有很多其他types的豆子。 我可以像这样做: <list> <item xsi:type="person" xmlns:xsi="http://www.w2.org/2001/XmlSchema-instance"></item> </list> 但是,理想的情况是,用类名称的复数版本replace“list”并用类名replace“item”将会很好。 那么,是否有可能在运行时以编程方式configurationJaxbContext或其他东西?本质上是在@XmlRootElement和@XmlElement设置name的值? 或者任何其他的方式来得到这个工作,而不必为每个beantypes编写单独的JaxbList实现? 也许XmlJavaTypeAdapter可以实现这样的事情? 更新 @Blaise下面接受的Doughan的解决scheme很好。 对于我的用例,我需要直接从Java对象到XML,下面是什么工作(注意这不是我的完整实现,它只是用于演示的伪代码): //JAXBContext is thread safe and so create it in constructor or //setter or wherever: … JAXBContext jc = JAXBContext.newInstance(Wrapper.class, clazz); … public String […]

未findJava类java.util.ArrayList …和MIME媒体typestext / xml的消息正文编写器

我使用Jersey来构build一个REST服务,并希望返回一个Collection<String>作为XML。 @GET @Produces(MediaType.TEXT_XML) @Path("/directgroups") public Response getDirectGroupsForUser(@PathParam("userId") String userId) { try { Collection<String> result = service.getDirectGroupsForUser(userId, null, true); // return result; //first try // return result.toArray(new String[0]); //second try return Response.ok().type(MediaType.TEXT_XML).entity(result).build(); //third try } catch (UserServiceException e) { LOGGER.error(e); throw new RuntimeException(e.getMessage()); } } 但我的尝试失败,有以下例外: javax.ws.rs.WebApplicationException:com.sun.jersey.api.MessageException:Java类java.util.ArrayList的消息主体编写器,Java类类java.util.ArrayList和MIME媒体typestext / xml不是发现 和所有的结果,我发现通过谷歌处理返回的文本/ JSON而不是像我的情况下的文本/ XML的exception。 任何人都可以帮我吗? 我想,如果我使用一个响应,这将是我在XML的根元素和我的集合中的string元素的列表..

我如何告诉jaxb / Maven生成多个模式包?

例: </plugin> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.7.1</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <schemaDirectory>src/main/resources/dir1</schemaDirectory> <schemaIncludes> <include>schema1.xsd</include> </schemaIncludes> <generatePackage>schema1.package</generatePackage> </configuration> </plugin> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.7.1</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <schemaDirectory>src/main/resources/dir2</schemaDirectory> <schemaIncludes> <include>schema2.xsd</include> </schemaIncludes> <generatePackage>schema2.package</generatePackage> </configuration> </plugin> </plugins> 发生了什么事情:Maven执行第一个插件。 然后删除目标文件夹并创build第二个包,然后可见。 我试着为第一个configuration设置target / somedir1,为第二个configuration设置target / somedir2。 但行为不会改变? 有任何想法吗? 我不想直接在src / main / java文件夹中生成包,因为这些包是生成的,不应该与手动创build的类混合使用。

java.lang.VerifyError:期望分支目标JDK 1.7的堆栈映射框架

升级到JDK 1.7后,我得到以下exception: java.lang.VerifyError: Expecting a stackmap frame at branch target 71 in method com.abc.domain.myPackage.MyClass$JaxbAccessorM_getDescription_setDescription_java_lang_String.get(Ljava/lang/Object;)Ljava/lang/Object; at offset 20 at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2413) at java.lang.Class.getConstructor0(Class.java:2723) at java.lang.Class.newInstance0(Class.java:345) at java.lang.Class.newInstance(Class.java:327) at com.sun.xml.internal.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.instanciate(OptimizedAccessorFactory.java:184) at com.sun.xml.internal.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:129) at com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$GetterSetterReflection.optimize(Accessor.java:384) at com.sun.xml.internal.bind.v2.runtime.property.SingleElementLeafProperty.<init>(SingleElementLeafProperty.java:72) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.sun.xml.internal.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:113) at com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:166) at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:494) at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:311) at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:126) […]