Сериализация Datetime без GMT в C # - PullRequest
2 голосов
/ 23 июля 2010

Я сгенерировал классы из xsd и хочу сериализовать DateTime. Мой класс выглядит как

private System.DateTime timeGMT; 

 [System.Xml.Serialization.XmlElementAttribute(DataType="time")] 
 public System.DateTime TimeGMT { 
     get { 
         return this.timeGMT; 
     } 
     set { 
         this.timeGMT= value; 
     } 
 }

Но когда я присваиваю любой объект DateTime, он сериализуется в формате

<TimeGMT>12:00:00.0000000-04:00</TimeGMT>

Но я хочу, чтобы он был сериализован как

<TimeGMT>12:00:00</TimeGMT>

Я посмотрел на этот вопрос:

Сериализация DateTime по времени без миллисекунд и gmt

что похоже на мой случай. Но моя проблема в том, что я также хочу проверить сгенерированный xml на xsd. Поэтому я не могу преобразовать тип возвращаемого значения в строку. (Если я использую String в качестве возвращаемого типа, то получаю исключение при генерации XML как

time is an invalid value for XMLElementAttribute.DataType property.The property may be specified for only primitive types.

) * * тысяча двадцать-один

Есть ли другой выход? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 31 августа 2010

Я не изменил схему XML, потому что она используется как стандартная. Я удалил

[System.Xml.Serialization.XmlElementAttribute(DataType="time")]  

из моего класса и использовал решение, предложенное в

Сериализация DateTime по времени без миллисекунд и gmt

0 голосов
/ 23 июля 2010

Решением вашего связанного вопроса является то, что вам нужно сделать. Вы все еще можете проверить полученный XML на соответствие XSD, но XSD не должен определять этот элемент как тип XML datetime (потому что это тот, который имеет миллисекунды и часовой пояс, который, как вы сказали, вам не нужен). Вместо этого вам придется определить свой собственный тип XSD, который соответствует тому, что вы хотите.

...