1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using System.Xml; 8 using System.Xml.Serialization; 9 10 namespace ConsoleApp3 11 { 12 class Program 13 { 14 static void Main(string[] args) 15 { 16 string stream = "<request><ship_package_list><ship_package><mail_company_name>中国邮政</mail_company_name><mail_no>123456789</mail_no></ship_package></ship_package_list><main_purchase_order_no>40627867847799</main_purchase_order_no><sub_order_list><sub_order><product_id>621540814494</product_id><sub_purchase_order_no>40627867857772</sub_purchase_order_no><product_title>测试商品3 非请勿下单</product_title></sub_order><sub_order><product_id>621541154070</product_id><sub_purchase_order_no>40627867867745</sub_purchase_order_no><product_title>测试商品2 非请勿下单</product_title></sub_order></sub_order_list></request>"; 17 18 //StringReader reader = new StringReader(stream); 19 //XmlSerializer xmlSerializer = new XmlSerializer(typeof(object)); 20 //object obj = xmlSerializer.Deserialize(reader); 21 XmlDocument doc = new XmlDocument(); 22 doc.LoadXml(stream.ToString()); 23 string jsonText = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc); 24 object a = Newtonsoft.Json.JsonConvert.DeserializeObject<object>(jsonText); 25 QiMenDeliveredModel model = new QiMenDeliveredModel(); 26 try 27 { 28 using (StringReader sr = new StringReader(stream)) 29 { 30 XmlSerializer serializer = new XmlSerializer(typeof(QiMenDeliveredModel)); 31 32 model = serializer.Deserialize(sr) as QiMenDeliveredModel; 33 34 } 35 } 36 catch (Exception ex) 37 { 38 } 39 try 40 { 41 RequestModel<ship_package, Delivered_Sub_Order> m = Newtonsoft.Json.JsonConvert.DeserializeObject<RequestModel<ship_package, Delivered_Sub_Order>>(jsonText); 42 43 model.main_purchase_order_no = m.request.main_purchase_order_no; 44 List<Delivered_Sub_Order> list = new List<Delivered_Sub_Order>(); 45 list.Add(m.request.sub_order_list.sub_order); 46 model._Delivered_Sub_Order = list; 47 List<ship_package> lists = new List<ship_package>(); 48 lists.Add(m.request.ship_package_list.ship_package); 49 model._ship_package_list = lists; 50 } 51 catch (Exception ex) 52 { 53 54 } 55 try 56 { 57 RequestModel<ship_package, List<Delivered_Sub_Order>> m = Newtonsoft.Json.JsonConvert.DeserializeObject<RequestModel<ship_package, List<Delivered_Sub_Order>>>(jsonText); 58 59 model.main_purchase_order_no = m.request.main_purchase_order_no; 60 List<Delivered_Sub_Order> list = new List<Delivered_Sub_Order>(); 61 foreach (var item in m.request.sub_order_list.sub_order) 62 { 63 list.Add(item); 64 } 65 model._Delivered_Sub_Order = list; 66 List<ship_package> lists = new List<ship_package>(); 67 lists.Add(m.request.ship_package_list.ship_package); 68 model._ship_package_list = lists; 69 } 70 catch (Exception ex) 71 { 72 73 } 74 try 75 { 76 77 RequestModel<List<ship_package>, Delivered_Sub_Order> m = Newtonsoft.Json.JsonConvert.DeserializeObject<RequestModel<List<ship_package>, Delivered_Sub_Order>>(jsonText); 78 model.main_purchase_order_no = m.request.main_purchase_order_no; 79 List<Delivered_Sub_Order> list = new List<Delivered_Sub_Order>(); 80 list.Add(m.request.sub_order_list.sub_order); 81 model._Delivered_Sub_Order = list; 82 List<ship_package> lists = new List<ship_package>(); 83 foreach (var item in m.request.ship_package_list.ship_package) 84 { 85 lists.Add(item); 86 } 87 model._ship_package_list = lists; 88 } 89 catch (Exception ex) 90 { 91 } 92 try 93 { 94 RequestModel<List<ship_package>, List<Delivered_Sub_Order>> m = Newtonsoft.Json.JsonConvert.DeserializeObject<RequestModel<List<ship_package>, List<Delivered_Sub_Order>>>(jsonText); 95 model.main_purchase_order_no = m.request.main_purchase_order_no; 96 List<Delivered_Sub_Order> list = new List<Delivered_Sub_Order>(); 97 foreach (var item in m.request.sub_order_list.sub_order) 98 { 99 list.Add(item); 100 } 101 model._Delivered_Sub_Order = list; 102 List<ship_package> lists = new List<ship_package>(); 103 foreach (var item in m.request.ship_package_list.ship_package) 104 { 105 lists.Add(item); 106 } 107 model._ship_package_list = lists; 108 } 109 catch (Exception ex) 110 { 111 } 112 113 string s = "1"; 114 } 115 } 116 117 /// <summary> 118 /// 发货 119 /// </summary> 120 [XmlRoot(ElementName = "request")] 121 [Serializable] 122 public class QiMenDeliveredModel 123 { 124 /// <summary> 125 /// 发货包裹列表 126 /// </summary> 127 [XmlArray("ship_package_list"), XmlArrayItem("ship_package")] 128 public List<ship_package> _ship_package_list { get; set; } 129 130 /// <summary> 131 /// 主采购单号 132 /// </summary> 133 public string main_purchase_order_no { get; set; } 134 135 /// <summary> 136 /// 子采购单列表 137 /// </summary> 138 [XmlArray("sub_order_list"), XmlArrayItem("sub_order")] 139 public List<Delivered_Sub_Order> _Delivered_Sub_Order { get; set; } 140 141 } 142 143 /// <summary> 144 /// 发货包裹 145 /// </summary> 146 public class ship_package 147 { 148 /// <summary> 149 /// 物流发货公司 150 /// </summary> 151 public string mail_company_name { get; set; } 152 153 /// <summary> 154 /// 运单号 155 /// </summary> 156 public string mail_no { get; set; } 157 } 158 159 /// <summary> 160 /// 子采购单 161 /// </summary> 162 public class Delivered_Sub_Order 163 { 164 /// <summary> 165 /// 商家编码 166 /// </summary> 167 public string merchant_code { get; set; } 168 169 /// <summary> 170 /// 仓内货品外部编码 171 /// </summary> 172 public string goods_outer_id { get; set; } 173 174 /// <summary> 175 /// 产品id 176 /// </summary> 177 public string product_id { get; set; } 178 179 /// <summary> 180 /// 子采购单单号 181 /// </summary> 182 public string sub_purchase_order_no { get; set; } 183 184 /// <summary> 185 /// 产品SKU ID 186 /// </summary> 187 public string sku_id { get; set; } 188 189 /// <summary> 190 /// 产品标题 191 /// </summary> 192 public string product_title { get; set; } 193 194 /// <summary> 195 /// 产品编码 196 /// </summary> 197 public string product_number { get; set; } 198 } 199 200 public class RequestModel<SPT, SUT> 201 { 202 public QiMenDeliveredJsonModel<SPT, SUT> request { get; set; } 203 } 204 205 public class QiMenDeliveredJsonModel<SPT, SUT> 206 { 207 /// <summary> 208 /// 发货包裹列表 209 /// </summary> 210 public ShipPackageList<SPT> ship_package_list { get; set; } 211 212 /// <summary> 213 /// 主采购单号 214 /// </summary> 215 public string main_purchase_order_no { get; set; } 216 217 /// <summary> 218 /// 子采购单列表 219 /// </summary> 220 public SubOrderList<SUT> sub_order_list { get; set; } 221 222 } 223 public class ShipPackageList<T> 224 { 225 public T ship_package { get; set; } 226 } 227 228 public class SubOrderList<T> 229 { 230 public T sub_order { get; set; } 231 } 232 }