2016-09-07 92 views
0

我需要從XML文件中將(除其他之外)日期帶入到我的C#應用​​程序中的PostgreSQL表中。C#XmlSerializer反序列化日期格式

我的問題是,如果我宣佈現場像這樣的字符串:

[XmlAttribute("startDate")] 
public string StartDate { get; set; } 

它不會在所有(值爲null)反序列化。我若爲日期時間是這樣的:

[XmlAttribute("startDate")] 
public DateTime StartDate { get; set; } 

不管我進入XML領域,我總是得到值01.01.0001 00:00:00

我試着用YYYY-MM-DD,YYYY/MM/DD和DD.MM.YYYY輸入日期。我究竟做錯了什麼?它適用於其他字符串和整數。

編輯:

例XML:

<?xml version="1.0" encoding="utf-8" ?> 
<command name="TestCommand"> 
    <weeks>11</weeks> <!-- this works fine --> 
    <startDate>2017/02/01</startDate> <!-- this doesn't --> 
</command> 

反序列化發生使用XmlSerializer.Deserialize()插入其中包括的字段的配置文件我給上述

+1

你能舉例說明負責反序列化的示例xml和代碼嗎? – MajkeloDev

+0

你有沒有嘗試在'XmlAttribute'中設置'DataType =「date」'? –

+1

@JonSkeet - 我認爲問題在別的地方。請注意,當OP將數據類型更改爲字符串時,它將被反序列化爲空 – MajkeloDev

回答

2

確定的答案爲例子簡單。這不是XmlAttribute ...這是XmlElement。 更改屬性:

[XmlElement("startDate")] 
public DateTime StartDate { get; set; } 

確定元素「星期」正常工作,並標有XmlAttribute?

+0

謝謝,這解決了問題!我應該在這些情況下通常使用XmlElement(聽起來像「星期」的工作更巧合嗎?) –

+0

哦,你是對的。其他字段是XmlElements。非常感謝您的幫助! –

+0

看看你的xml - name是命令ELEMENT的ATTRIBUTE,但周和startDate是元素。你能看到區別麼 ? – MajkeloDev