2014-09-30 16 views
1

我正在学习JAX-WS,并且我也是在JAXB中引入的。我可以使用它来(un)编组java(xml)到xml(java)。但是,什么是此行的目的,然后我产生我与Apache CXF WS数据:WebService数据结构中的JAXBElement

@XmlElementRef(name = "Id", namespace = "External.Test", type = JAXBElement.class, required = false) 
    protected JAXBElement<String> id; 
  1. 为什么它不能只是String id代替JAXBElement<String> id
  2. 如何将请求数据(比方说java POJO)转换为 这样的结构? (我说的是从映射到POJO这 暴露WS结构包裹成JAXBElements场)
+0

它不能只是一个字符串,因为你正在处理一个web服务。 Web服务通过不同的语言使用,一些语言处理字符串的方式不同。看看这个http://stackoverflow.com/questions/14489306/parameter-jaxbelement-string – 2014-09-30 19:41:10

+0

@ j.con这与用不同语言的字符串处理无关。 – lexicore 2014-09-30 21:34:26

+0

@lexicore哦,是啊?尝试在'int'为空时从C#中的java web服务使用'int'。 C#不允许'int'为空,只有'int?'这就是为什么使用标准包装器的原因...... – 2014-10-01 12:40:54

回答

1

1 .-这种结构取决于你如何定义你的架构中使用。例如,如果你使用一个替代组。有关更多信息,请参阅this answer

2:这里是一些代码,可以帮助你: Let's说,你POJO定义是这样的结构:

public JAXBElement<?> getObjectData() { 
    return objectData; 
} 

然后,当你解组,您已经接受了该请求被填充用你想恢复的字符串:

JAXBElement<String> rncElem = (JAXBElement<String>) dataContainer.getObjectData(); 
return rncElem.getValue(); 
+0

好吧,我在链接里找到了答案:)谢谢 – energizer 2014-10-01 19:34:08