首先将完整的 XML 转换为字符串:
string xml = response.OuterXml.ToString();
然后使用 XDocument:
XDocument xDoc = XDocument.Parse(xml);
现在使用 LINQ to XML 选择每个 Customer 元素并创建一个列表:
var obj = (from element in xDoc.Descendants("GetCustomers").Elements("Customer")
select new {
ID = element.Element("CustomerID").Value,
Name element.Element("CustomerName").Value,
Code = element.Element("CustomerCode").Value
}).ToList();
我确信现在有很多更好的方法可以将其转换为我的 ViewModel 数据,但我就是这样做的:
foreach (var item in obj)
{
RMCustomer customer = new RMCustomer();
if (item.ID != null && item.ID.Length > 0)
{
customer.RMInternalUniqueID = Convert.ToInt32(item.ID);
}
if (item.Code != null && item.Code.Length > 0)
{
customer.CustomerRMExternalID = Convert.ToInt32(item.Code);
}
else
{
customer.CustomerRMExternalID = null;
}
if (item.Name != null && item.Name.Length > 0)
{
customer.CustomerName = item.Name;
}
if (customer != null)
{
roadMarqueCustomers.Add(customer);
}
}
我应该指出我的 ViewModel 很简单:
public class RMCustomer
{
public string CustomerName { get; set; }
public int CustomerRMInternalUniqueID { get; set; }
public Nullable<int> CustomerRMExternalID { get; set; }
}
最后:
return roadMarqueCustomers;