string类型的xml报文解析为java实体类object
Posted 米泽玄師
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了string类型的xml报文解析为java实体类object相关的知识,希望对你有一定的参考价值。
回馈广大同行网友系列~~~~~~首先thanks for 网友们的无私分享,在抄完之后我献上我的解决整理
公司用内网,纯手打的
xml报文demo
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<ITEM>
<XXXX></XXXX>
...
</ITEM>
<ITEM>
<XXXX></XXXX>
...
</ITEM>
</ROOT>
首先写一个XmlUtil工具类
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
...
public class XmlUtil
public static <T> T convertXmlStrToObject(Class<?> clazz,String xmlStr)
T xmlObject = null;
try
JAXBContext context = JAXBContext.newInstance(clazz);
Unmarshaller unmarshaller = context.createUnmarshaller();
xmlObject = (T) unmarshaller.unmarshal(new StringReader(xmlStr));
catch (Exception e)
log.error("将报文转换为object失败:",e.getMessage());
return xmlObject;
你需要转化的类
@Data
@XmlRootElement(name = "ROOT")
public class XXXRoot
private List<XXX> ITEM;
ITEM对应了 < ITEM > 标签,如果要起别名可以试试@XmlElement(name = “ITEM”)我没试过,具体效果自己看吧
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class XXX implements Serializable
@XmlElement(name="yyy")
private String yy;
.....
使用的时候,XXXRoot ddd = XmlUtil.convertXmlStrToObject(XXXRoot.class,xmlbaowenstring);
.net WebService接口参数为实体类数组,java调用接口怎么把参数转换成string类型的xml内容
比如,.net 接口为public MassgeReturn SendPackage(Package[] packages,string usrName),用java调用该接口,如果要将参数直接转成xml格式的string,那么xml的格式应该是怎么样的?例如:
string xml="<List_Package<UnSend_Package<PACKAGE_ID>L06000A45052774</PACKAGE_ID><PACKAGE_SHOW_ID></UnSend_Package></List_Package>";
String soapAction = "http://tempuri.org/UrgentSend";
// 指定WebService的命名空间和调用的方法名
SoapObject rpc = new SoapObject(nameSpace, methodName);
PropertyInfo info=new PropertyInfo();
info.setName("StringValue");
info.setValue(packagesXML);//转换为string的xml格式字符串
rpc.addProperty(info);
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
// 设置是否调用的是dotNet开发的WebService
envelope.dotNet = true;
//(new MarshalBase64()).register(envelope);
// 等价于envelope.bodyOut = rpc;
envelope.setOutputSoapObject(rpc);
HttpTransportSE transport = new HttpTransportSE(endPoint);
transport.debug = false;
以上是关于string类型的xml报文解析为java实体类object的主要内容,如果未能解决你的问题,请参考以下文章
.net WebService接口参数为实体类数组,java调用接口怎么把参数转换成string类型的xml内容