Я получаю сообщение об ошибке при попытке сериализации моего класса. Схема xml определяется сторонней, и я не могу ее изменить.Serialize 2 свойства с тем же именем, но разные атрибуты
XML-выглядит следующим образом (фрагмент только кстати):
<order>
<date type="received-date">20160810</date>
<date type="required-date">20160810</date>
<reference type="cust-order-no">CCCC</reference>
<reference type="an-2">AAAA</reference>
<reference type="an-3">BBBB</reference>
<order>
Я определил следующий класс для моей даты заказа
[Serializable]
public class OrderDate
{
public enum OrderDateTypeEnum
{
[Description("entered-date")]
EnteredDate,
[Description("received-date")]
ReceivedDate,
[Description("required-date")]
RequiredDate
}
private OrderDateTypeEnum _typeEnum;
[XmlIgnore]
public OrderDateTypeEnum TypeEnum
{
get { return this._typeEnum; }
set
{
this._typeEnum = value;
this.Type = this._typeEnum.GetDescription();
}
}
[XmlAttribute("type")]
public string Type { get; set; }
[XmlText]
public string Name { get; set; }
}
и класс порядок определяется как:
[Serializable]
public class Order
{
[XmlElement("date")]
public OrderDate EnteredDate { get; set; }
[XmlElement("date")]
public OrderDate ReceivedDate { get; set; }
[XmlElement("date")]
public OrderDate RequiredDate { get; set; }
}
, но когда я сериализую это, я получаю сообщение об ошибке:
The XML element 'date' from namespace '' is already present in the current
scope. Use XML attributes to specify another XML name or namespace for the
element.
Когда я удаляю [XmlElement("date")]
, он работает, но мой xml не отформатирован так, как мне это нужно.
У меня будет такая же проблема со ссылкой, когда я доберусь до нее.
Как я могу обойти эту проблему?
Не должно быть '[XmlElement (" дата-дата ")]' вместо '[XmlElement (" date ")]' для свойства 'ReceivedDate'? То же самое касается требуемой даты. И я не вижу 'EnteredDate' в вашем XML. – user3185569
@ user3185569, в идеале да, но если вы сделаете то, что предложили, примечание не будет , но вместо этого оно будет <получено-date type = "received-date" /> что нехорошо в моем сценарии, поскольку помните, что я не могу изменить формат, в котором xml представлен мне, поскольку он исходит от стороннего. –
Thierry