Tag: jaxb

JAXB:我应该如何编组复杂的嵌套数据结构?

我有几个复杂的数据结构 Map< A, Set< B > > Set< Map< A, B > > Set< Map< A, Set< B > > > Map< A, Map< B, Set< C > > > and so on (more complex data structures) 注意:在我的情况下,如果使用设置或列表并不重要。 现在我知道JAXB让我定义XmlAdapter的,这很好,但是我不想为每个给定的数据结构定义一个XmlAdapter(它只是太复制和粘贴代码)。 我试图通过声明两个通用的XmlAdapter来实现我的目标: 一个用于Map: MapAdapter<K,V> 一个用于Set: SetAdapter<V> 问题是 : JAXB抱怨如下: javax.xml.bind.JAXBException: class java.util.Collections$UnmodifiableMap nor any of its super […]

如何在Java eefunction上expression对Java 9过渡的依赖关系?

我们使用maven并有文物,反过来依赖于其他内部文物。 我正在迁移到java-9的过程中,并打算先将所有内容迁移到Java 9,而不是模块化代码(即在未命名的模块中)。 我碰到的问题是,我们依赖于java.xml.bind ,它现在不包含在默认模块中。 有没有一种“正确”的方式来expression这个对Maven的java.xml.bind依赖?

我如何定制JSON对象的序列化为JSON?

我正在使用Jersey为服务器组件创buildREST Web服务。 我要在列表中序列化的JAXB注释的对象如下所示: @XmlRootElement(name = "distribution") @XmlType(name = "tDistribution", propOrder = { "id", "name" }) public class XMLDistribution { private String id; private String name; // no-args constructor, getters, setters, etc } 我有一个REST资源来检索一个分配,看起来像这样: @Path("/distribution/{id: [1-9][0-9]*}") public class RESTDistribution { @GET @Produces("application/json") public XMLDistribution retrieve(@PathParam("id") String id) { return retrieveDistribution(Long.parseLong(id)); } // business logic (retrieveDistribution(long)) } […]

如何指定JAXB编组xsd:dateTime时使用的date格式?

当JAXB将date对象( XMLGregorianCalendar )编组到xsd:dateTime元素中时,如何指定生成的XML的格式? 例如:默认的数据格式是使用毫秒<StartDate>2012-08-21T13:21:58.000Z</StartDate>我需要省略毫秒。 <StartDate>2012-08-21T13:21:58Z</StartDate> 我怎样才能指定我想要它使用的输出格式/date格式? 我使用javax.xml.datatype.DatatypeFactory来创buildXMLGregorianCalendar对象。 XMLGregorianCalendar xmlCal = datatypeFactory.newXMLGregorianCalendar(cal);

Maven JAXB插件的区别

我已经确定了Maven 2的两个JAXB插件存在,有一些不同的configuration。 其中一个来自Sun: http ://jaxb.dev.java.net/jaxb-maven2-plugin/,另一个来自Mojohaus: http ://mojohaus.org/jaxb2-maven-plugin/ 这两个插件哪个可以推荐? 谢谢Matt。 在我这个小小的研究项目上,我发现还有另外一个插件: <groupId>com.sun.tools.xjc.maven2</groupId> <artifactId>maven-jaxb-plugin</artifactId> 那一个: <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> 还是来自Codehouse的。

SEVERE:找不到媒体types= application / json的MessageBodyWriter,type = class com.jersey.jaxb.Todo,genericType = class com.jersey.jaxb.Todo

我想通过在网上冲浪创build一个Restful Web服务,我创build了一个,但我得到一个MessageBodyWriter未find媒体types=应用程序/ JSON错误 我的Todo课堂: package com.jersey.jaxb; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import org.pojomatic.Pojomatic; import org.pojomatic.annotations.AutoProperty; @XmlRootElement @XmlType(name = "todo") @XmlAccessorType(XmlAccessType.FIELD) @AutoProperty public class Todo { @XmlElement(name = "summary") private final String summary; @XmlElement(name = "description") private final String description; public String getSummary() { return summary; } public String getDescription() { […]

如何使用JAXB生成CDATA块?

我正在使用JAXB将我的数据序列化为XML。 类代码很简单,如下所示。 我想要生成包含CDATA块的XML,以获得某些Args的值。 例如,当前的代码产生这个XML: <command> <args> <arg name="test_id">1234</arg> <arg name="source">&lt;html>EMAIL&lt;/html></arg> </args> </command> 我想包装CDATA中的“source”参数,使其如下所示: <command> <args> <arg name="test_id">1234</arg> <arg name="source"><[![CDATA[<html>EMAIL</html>]]></arg> </args> </command> 我如何在下面的代码中实现这一点? @XmlRootElement(name="command") public class Command { @XmlElementWrapper(name="args") protected List<Arg> arg; } @XmlRootElement(name="arg") public class Arg { @XmlAttribute public String name; @XmlValue public String value; public Arg() {}; static Arg make(final String name, final String […]

使用JAXB解组/编组List <String>

我正在尝试创build一个非常简单的REST服务器。 我只是有一个testing方法,将返回一个string列表。 代码如下: @GET @Path("/test2") public List test2(){ List list=new Vector(); list.add("a"); list.add("b"); return list; } 它给出了以下错误: SEVERE:Javatypes的消息主体编写器, 类java.util.Vector和MIME媒体types, 应用程序/八位字节stream,没有被发现 我希望JAXB有一个像String,Integer等简单types的默认设置,我猜不是。 这是我所想象的: <Strings> <String>a</String> <String>b</String> </Strings> 什么是最简单的方法来使这种方法的工作?

JAXB:如何在解组XML文档时忽略名称空间?

我的模式指定了一个命名空间,但文档没有。 在JAXB解组过程中忽略名称空间的最简单方法是什么(XML – > object)? 换句话说,我有 <foo><bar></bar></foo> 代替, <foo xmlns="http://tempuri.org/"><bar></bar></foo>

如何解决Java 9中的java.lang.NoClassDefFoundError:javax / xml / bind / JAXBException

我有一些使用JAXB API类的代码,它们是作为Java 6/7/8中JDK的一部分提供的。 当我使用Java 9运行相同的代码时,在运行时,我收到错误,指出在运行时无法findJAXB类。 自Java 6以来,JAXB类已经作为JDK的一部分提供,那么Java 9为什么不能再find这些类呢?