wsdl生成客户端代码org.apache.axis.message.MessageElement []封装
1.调用第三方的webservice接口, 通过wsdl生成客户端代码,出现MessageElement []函数。
public void set_any(org.apache.axis.message.MessageElement [] _any) {
this._any = _any;
}
xml 样式
<jet:Body>
<params>
<a>111</a>
<b>222</b>
<c>333</c>
<d>4444</d>
</params>
</jet:Body>
- 在进行.MessageElement[]封装时,需要先把入参转换成样式
<params>
<a>111</a>
<b>222</b>
<c>333</c>
<d>4444</d>
</params>
- 如何将xml与对象进行转换,可以查看XStream
XStream是一个Java对象与XML互相转换的工具类库。
引入jar包
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.8</version>
</dependency>
工具类,对象转成xml
/**
* 将javabean和xml进行互转 *
*/
public class BeanAndXmlUtils {
/**
* 根据javabean对象组装成xml
* @param t
* @return
*/
public static String beanToXml(Request t){
XStream xstream = new XStream(new DomDriver("utf8", new XmlFriendlyNameCoder("-_", "_")));
xstream.processAnnotations(t.getClass()); // 识别obj类中的注解
String result = xstream.toXML(t);
return result;
}
}
- MessageElement []封装
MessageElement[] m = new MessageElement[1];
Document XMLDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(BeanAndXmlUtils.beanToXml(parmas))));
Element element2 = XMLDoc.getDocumentElement();
m[0] = new MessageElement(element2);
body.set_any(m);