刚刚接触.net Core不久,最近项目当中需要调用webService服务获取数据,负责接口的同事定义的返回类型是一个DataTable,但是我这边请求成功之后接收到的竟然是一个XML格式的数据,这把我搞得有点摸不着头脑,后面经过一番询问和查找资料后才明白,这是.net Core默认把DataTable转化成了XML!如何想拿到想要的数据还得解析一下!在这里记录一下,希望对日后有需要的小伙伴能提供一点帮助!
public async Task<DataResult<object>> GetMaterielInfo(QueryData<GetMaterielInfoQuery> query)
{
var result = new DataResult<object>();
try
{
using (var chnl = WcfInvoke.CreateWCFChannel<lytechWebServiceSoap>(WcfInvoke.LstechServiceUrl))
{
var proxy = chnl.CreateChannel();
//result.Data = await proxy.WMSCheckOutAsync(query.Criteria.MaterielNo);
///服务请求
var table = await proxy.WMSCheckOutAsync(query.Criteria.MaterielNo);
var lstProduct = new List<IWcfRckProductModel>();
//数据解析
var root = table?.Any1?.FirstChild;
if (root != null && root.HasChildNodes)
{
foreach (XmlElement item in root.ChildNodes)
{
int.TryParse(item["Qty"].InnerText, out int qty);
var info = NewWcfRckProductModel();
info.Fnumber = item["Fnumber"].InnerText;
info.ProdNo = item["ProdNo"].InnerText;
info.CustProdNo = item["CustProdNo"].InnerText;
info.Qty = qty;
info.ProdDesc = item["ProdDesc"].InnerText;
info.LotNo = item["LotNo"].InnerText;
info.PrintDate = item["PrintDate"].InnerText;
info.PrintCreateTime = item["PrintCreateTime"].InnerText;
info.CreateBy = item["CreateBy"].InnerText;
lstProduct.Add(info);
}
}
result.Data = lstProduct;
}
}
catch (Exception ex)
{
result.SetErr(ex, -500);
result.Data = null;
}
return result;
}