这有效:
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
我该如何解决?
谢谢