我无法将XML数据反序列化为我定义的数据结构。我对XML的创建没有任何控制权,但结构如下:
<order id="123456">
<userid>555</userid>
<merchant id="111">SomeMerchant</merchant>
</order>
我可以获得顶级属性和简单元素值,但是给我提出问题的部分是将子元素的值赋给子类中的属性。我的数据结构类似于:
public class OrderData
{
[XmlElement("merchant", typeof(OrderMerchant))]
public OrderMerchant Merchant { get; set; }
[XmlAttribute("id")]
public int OrderID { get; set; }
}
[Serializable]
public class OrderMerchant
{
[XmlElement("merchant")]
public string Name { get; set; }
[XmlAttribute("id")]
public int ID { get; set; }
}
我的问题:当我反序列化XML并获取一个对象时,我有一个ID为111但名称为null的Merchant对象。如何标记我的对象以便将元素文本分配给Name属性?我尝试使用元素名称,我尝试了一个XPath表达式(但我甚至不知道在这种情况下是否允许这样做。)
答案 0 :(得分:2)
您告诉序列化程序序列化元素商家,然后商家对象希望接收包含该名称的另一个元素“商家”。相反,使用属性[XmlText]标记Name属性,如下所示:
[Serializable]
public class OrderMerchant
{
[XmlText]
public string Name { get; set; }
[XmlAttribute("id")]
public int ID { get; set; }
}
那应该这样做