无法解组我的xml

时间:2011-11-30 05:26:46

标签: jaxb unmarshalling

我正在向webservice发送请求,并以xml格式从Web服务接收正确的响应,并在响应元素tage中填充了正确的值。现在我尝试解组,但响应对象正在填充null而不是我在XML响应中看到的值。

要检查哪些明显的事情? 这是我的代码:

InputSource outputSource = getWebServiceHelper().send(source,messageIdentifier);

JAXBElement<Envelope> responseEnv = (JAXBElement<Envelope>) getWebServiceHelper().unmarshal(new SAXSource(outputSource));
JAXBElement<ResponseObjectType> result = (JAXBElement<ResponseObjectType>)responseEnv.getValue().getBody().getAny().get(0); 

第二行执行时,响应属性变为空。尽管在xml标签之间是正确的!

非常感谢。 切塔尼亚

1 个答案:

答案 0 :(得分:1)

我通过激烈的反复试验找到了解决方案。这就是我完成它的方式。

运行xjc创建4个类,即ObjectFactory.javapackage-info.java,表示webservice请求的类和表示webservice响应的类。

我忽略了将package-info.java与其他3个类一起包括在内。这就是jaxb无法解散repsone的原因。

如果我不包含ObjectFactory.java,我在Spring上下文文件中定义的org.springframework.oxm.jaxb.Jaxb2Marshaller bean抛出的服务器启动时会出现异常,所以我知道我必须包含它。但不包括package-info.java无法无声地导致沮丧!

我已经在Stackoverflow和其他地方读过,unmarshal()方法只接受一个参数 - javax.xml.transform.Source和unmarshal我需要使用@XmlRootElement注释但这似乎不适用于我情况下。