JAX-RS:从post()响应中检索属性

时间:2016-12-16 23:02:35

标签: java neo4j xml-parsing jax-rs

我需要从Response调用返回的post()对象中检索属性:特别是,我使用Neo4J,在发布节点后我想检索它Id,是返回的XML代码中的属性。我目前的帖子看起来像这样:

Response res = target.path("resource/node").request(MediaType.APPLICATION_XML)
              .post(Entity.entity(node, MediaType.APPLICATION_XML));

然后我检查返回的HTTP状态,我还需要节点Id,它返回:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<node xmlns="http://www.namespace.org/Neo4J" id="140">
 ... node properties ...
</node>

我尝试将res.getEntity()投射到Document,但会导致以下情况:

java.lang.ClassCastException: org.glassfish.jersey.client.internal.HttpUrlConnector$2 cannot be cast to org.w3c.dom.Document

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用JAXB将POST正文XML数据映射到java对象:

Payload entity = res.getEntity(Payload.class);
String id = payload.id;

您可以定义Payload以反映您的XML结构:

import javax.xml.bind.annotation.*;


@XmlRootElement(name="node")
@XmlAccessorType(XmlAccessType.FIELD)
public class Payload {
    @XmlAttribute(name = "id")
    String id; // for example
}