我需要生成序列化過程中的下列XML: (片段)XML屬性沒有得到命名空間前綴
<IncidentEvent a:EventTypeText="Beginning" xmlns:a="http://foo">
<EventDate>2013-12-18</EventDate>
<EventTime>00:15:28</EventTime>
</IncidentEvent>
有問題的類看起來是這樣的:
public class IncidentEvent
{
public string EventDate { get; set; }
public string EventTime { get; set; }
[XmlAttribute("EventTypeText", Namespace = "http://foo")]
public string EventTypeText { get; set; }
}
看來,串行注意到名稱空間已經在xmlns中聲明:在根目錄下,並且忽略了我的屬性。我也試過如下:
[XmlRoot(Namespace = "http://foo")]
public class IncidentEvent
{
public string EventDate { get; set; }
public string EventTime { get; set; }
private XmlSerializerNamespaces _Xmlns;
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces Xmlns
{
get
{
if (_Xmlns == null)
{
_Xmlns = new XmlSerializerNamespaces();
_Xmlns.Add("ett", "http://foo");
}
return _Xmlns;
}
set
{
_Xmlns = value;
}
}
[XmlAttribute("EventTypeText", Namespace = "http://foo")]
public string EventTypeText { get; set; }
}
這將導致以下XML:
<ett:IncidentEvent EventTypeText="Beginning" xmlns:ett="http://foo">
<ett:EventDate>2013-12-18</ett:EventDate>
<ett:EventTime>00:15:28</ett:EventTime>
</ett:IncidentEvent>
這是不是我想要的。該元素不應該加前綴,該屬性應該是。需要什麼來讓序列化程序理解我想要的?
如果需要將此對象序列化爲另一個對象的子對象,這似乎會分崩離析。當我在一個場景中測試它時它運行良好,但我忘記了另一個場景。仍然,很好的答案。 – kettch