Jaxrs喜欢编组和解组

时间:2012-11-23 08:20:29

标签: jaxb jax-rs

我正在开发一个轻量级框架,用于编组和解组发送到jaxrs服务和从jaxrs服务接收的数据。我正在使用jaxb marshaller和unmarshaller。

当使用该服务时,我注意到它能够通过将它们包装到带有类名的标签中,然后在末尾包含“s”来编组实体列表。因此<customer>将被<customers>包裹。这是特定于实现的东西,还是在jaxrs规范中?

此外,在创建jaxrs服务时,您可以指定它消耗和生成的MediaTypes,如下所示:

@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)

您还可以指定在返回String,Long等时在服务器上使用的MediaType.TEXT_PLAIN

我想执行与服务器端相关的完全相反的操作。这就是服务所支配的解组,并以服务能够解组的方式编组数据。目前我有这段代码:

jaxbContext = JAXBContext.newInstance(<array of classes>);
javax.xml.bind.Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FRAGMENT, true);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
String xml = writer.toString();

Unmarshaller unmarshaller = jaxbContext.
StringReader reader = new StringReader(xml);
JAXBElement<T> jaxbElement = unmarshaller.unmarshal(new StreamSource(reader), clazz);
jaxbElement.getValue();

但是,此代码无法处理TEXT_PLAIN或指定类的列表。

0 个答案:

没有答案