Pergunta

Eu criei um arquivo de classe C # usando um arquivo XSD como uma entrada. Uma das minhas propriedades parecido com este:

 private System.DateTime timeField;

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

Quando serializado, o conteúdo do arquivo agora se parece com isso:

<Time>14:04:02.1661975+02:00</Time>

É possível, com XmlAttributes na propriedade, para tê-lo tornar sem os milissegundos e a GMT-valor como este?

<Time>14:04:02</Time>

Isso é possível, ou eu preciso fazer para cortar juntos algum tipo de xsl / xpath-substituir-magic depois que a classe tem sido serializado?

não é uma solução para alterar o objecto de corda, uma vez que é utilizado como um DateTime no resto do pedido e permite-nos criar um xml-representação de um objecto utilizando o método () XmlSerializer.Serialize.

A razão que eu preciso para remover a informação extra do campo é que o sistema de recepção não se conforma com as W3C-padrões para o tipo de dados tempo.

Foi útil?

Solução

Você pode criar uma propriedade string que faz a tradução de / para o seu campo TimeField e colocar o atributo de serialização em que, em vez da propriedade DateTime real que o resto dos usos da aplicação.

Outras dicas

Coloque [XmlIgnore] na propriedade Time.

Em seguida, adicione uma nova propriedade:

[XmlElement(DataType="string",ElementName="Time")]
public String TimeString
{
    get { return this.timeField.ToString("yyyy-MM-dd"); }
    set { this.timeField = DateTime.ParseExact(value, "yyyy-MM-dd", CultureInfo.InvariantCulture); }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top