我刚开始使用 SOAP API
我有来自 API 的 soap 响应
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<LoginResponse xmlns="http://test.org/ADMail_Service">
<LoginResult>
<ErrorMessage>Successful login</ErrorMessage>
<Status>true</Status>
</LoginResult>
</LoginResponse>
</soapenv:Body>
</soapenv:Envelope>
我正在尝试将其转换为一个对象。
通过在线阅读文章,我正在尝试使用 JAXB 来执行此操作,但我的对象是空的。
这是读取响应的代码。为了测试目的,我将响应写入了一个 xml 文件:
try {
XMLInputFactory xif = XMLInputFactory.newFactory();
XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml"));
xsr.nextTag(); // Advance to Envelope tag
xsr.nextTag(); // Advance to Body tag
xsr.nextTag();
xsr.nextTag();
JAXBContext jc = JAXBContext.newInstance(LoginResult.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
JAXBElement<LoginResult> je = unmarshaller.unmarshal(xsr, LoginResult.class);
System.out.println(je.getName());
System.out.println(je.getValue());
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (JAXBException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
LoginResult
类:
public class LoginResult {
private String errorMessage;
private String status;
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
提前致谢!
原文由 Ayo K 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用此代码检索 POJO,还可以将 @XmlRootElement 作为标头添加到您的 POJO。
(我没有测试下面的代码)
编辑 :
我为您找到了解决方案: