我正在以下列格式获取XML:
print(statsmodels.__version__)
print(pd.__version__)
print(np.__version__)
0.6.1
0.18.1
1.11.3
现在,当我使用包含XML的Deserializng字符串<Order>
<OrderData>
<OfferOrder></OfferOrder>
<OfferOrder></OfferOrder>
</OrderData>
</Order>
时,它不会将orderxml
填入我的<OfferOrder>
对象。
OrderData
类:
XmlSerializer xmlserializer = new XmlSerializer((typeof(Order)));
using (TextReader reader = new StringReader(orderxml))
{
order = (Order)xmlserializer.Deserialize(reader);
}
我的班级有问题吗?
答案 0 :(得分:2)
您的代码中存在一些问题。首先,您可以将属性设置为自动实现的属性,省略私有后备字段并改为写入:
public MyType MyProperty { get; set; }
其次,您必须将Xml中的标记名称提供给序列化程序。在您的情况下,xml中的名称和类结构中的名称相同,因此您也可以省略名称。但只是为了完整性:
public class Order
{
[XmlElement("OrderData")
public OrderOrderData OrderData { get; set; }
}
public class OrderOrderData
{
[XmlElement("OfferOrder")
public OrderOrderDataOfferOrder[] OfferOrder { get; set; }
}
它不适合您的原因是数组通常使用嵌套元素序列化,在您的情况下,该元素的名称为OfferOrders
。在该标记内,您将拥有数组元素。通常不希望进一步嵌套,而是将数组的元素直接压缩到实际的数据类中。为此,请在我的代码XmlElement
中在您的数组声明的前面添加OfferOrder
,其名称为元素。