【发布时间】:2014-08-11 08:53:38
【问题描述】:
我有来自另一个应用程序的 Soap 响应,我正在尝试使用 "XStream" 使用以下代码将其转换为对象;
XStream xstream = new XStream(new DomDriver());
file file = new File("file.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,"UTF-8");
String reqXMLString = "" //Stream converted to XML
System.out.println(xstream.fromXML(reqXMLString)); **//Error line**
文件.xml:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:validationErrors>
<messages>
<message>
<code>1020</code>
<text>Filed 1 is mandatory</text>
</message>
</messages>
</soap:validationErrors>
</soap:Body>
</soap:Envelope>
当我尝试将此 xml 转换为 java 对象时。我遇到了错误;
Exception in thread "main" com.thoughtworks.xstream.mapper.CannotResolveClassException: soap:Envelope : soap:Envelope
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
我想知道,如何使用 XStream 将soap 响应转换为java 对象?
提前致谢。
【问题讨论】:
-
我看不到您的示例中配置的任何别名/转换器,因此它可能不知道如何反序列化您的 soap:Envelope
-
所以,我需要这样配置:xstream.codehaus.org/alias-tutorial.html
-
xstream.codehaus.org/alias-tutorial.html 的链接无效。