我需要从这些 xml 数据中获取 OrderID:
<?xml version="1.0" encoding="utf-8"?>
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2015-12-10T16:12:55.184Z</Timestamp>
<Ack>Success</Ack>
<Version>967</Version>
<Build>e967_core_Bundled_5642307_R1</Build>
<OrderArray>
<Order>
<OrderID>865826</OrderID>
<OrderStatus>Active</OrderStatus>
</Order>
</OrderArray>
</GetOrdersResponse>
我已经尝试过这个但不起作用。
var xDoc = XDocument.Parse(xmlResult);
var orderElements = xDoc.Elements("GetOrdersResponse").Elements("OrderArray").Elements("Order");
foreach (XElement elem in orderElements)
{
var orderId = Convert.ToInt32(_xmlHelper.GetChildElementValue(elem, "OrderID"));
}
请指教。
对于这样的问题,我总是选择使用 XmlSerializer。
使用这个类:
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace classes
{
[XmlType(Namespace = "urn:ebay:apis:eBLBaseComponents")]
public class Order
{
public int OrderID { get; set; }
public string OrderStatus { get; set; }
}
[XmlType(Namespace = "urn:ebay:apis:eBLBaseComponents")]
public class OrderArray
{
public List<Order> Orders { get; set; }
}
[XmlRoot(Namespace = "urn:ebay:apis:eBLBaseComponents")]
public class GetOrdersResponse
{
public string Timestamp { get; set; }
public string Ack { get; set; }
public string Version { get; set; }
public string Build { get; set; }
public OrderArray OrderArray { get; set; }
}
}
然后反序列化为您的对象:
XmlSerializer serializer = new XmlSerializer(typeof(GetOrdersResponse ));
using (TextReader reader = new StringReader(xmlResult))
{
GetOrdersResponse result = (GetOrdersResponse) serializer.Deserialize(reader);
}
int id=result.OrderArray.Orders.First().OrderID; //this will return ID of first object in Orders list.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)