0

我有一个调用一些远程 Web 服务的 Web 应用程序。客户端(Java 类)由 Axis 1.3 从 WSDL(Eclipse 中的 WSDL2Java)开始生成,它正确地使用与远程服务器交换的 XML 消息 (SOAP)。

现在我有其中一个 Web 服务的一些 XML 响应(保存在文件系统上),但我需要将此 XML 绑定到 Java 类,以便使用包含的数据。我怎样才能做到这一点?如何绑定 XML(与 Axis)以填充已经存在的 Java bean?

使用是否正确

org.apache.axis.encoding.Deserializer desrializer = dc.getDeserializerForClass(ExampleClass.class);

谢谢梅西

4

1 回答 1

0

这有效:

org.apache.axis.server.AxisServer server = new org.apache.axis.server.AxisServer();
server.setOption(AxisEngine.PROP_DOMULTIREFS, false);
MessageContext msgContext = new MessageContext(server);
java.io.Reader reader = new java.io.StringReader(txt.toString());
DeserializationContext dser = new DeserializationContext(new org.xml.sax.InputSource(reader),msgContext,org.apache.axis.Message.RESPONSE);
dser.parse();
SOAPEnvelope env = dser.getEnvelope();
RPCElement rpcElem = (RPCElement)env.getFirstBody();
MessageElement struct = rpcElem.getRealElement();
Object obj = struct.getValueAsType(new javax.xml.namespace.QName("http://xmlns.eu/prova"),eu.myClass.class);

现在我有一个包含正确字段(带有值)的对象。但是我对数组的反序列化有疑问。如果反序列化的 XML 包含一个数组,那么我以这种方式更改上面的最后一行

Object obj = struct.getValueAsType(new javax.xml.namespace.QName("http://xmlns.eu/prova"),eu.myClass[].class);

我收到此错误

org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType

我该如何解决?

谢谢

于 2013-09-26T13:57:49.183 回答