我在嘗試序列化我的類時遇到錯誤。 xml模式由第三方定義,我無法更改它。具有相同名稱但具有不同屬性的序列化2屬性
的XML看起來像這樣(只片段的BTW):
<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沒有格式化我需要的方式。
我會在參考時遇到與參考完全相同的問題。
我該如何繞過這個問題?
對於ReceivedDate屬性,不應該是'[XmlElement(「received-date」)]''而不是'[XmlElement(「date」)]?所需日期也一樣。我在你的XML中看不到「EnteredDate」。 – user3185569
@ user3185569,理想情況是,但是如果你按照你的建議做了,那麼這個票據不會是而是它會是這在我的場景中並不好,因爲記住我不能改變xml的格式,因爲它來自第三方。 –
Thierry