Pregunta

He creado una clase de C# de archivos mediante el uso de un XSD-archivo como entrada.Una de mis propiedades, tener este aspecto:

 private System.DateTime timeField;

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

Cuando la serie, el contenido del archivo ahora se parece a esto:

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

Es posible que, con XmlAttributes en la propiedad, a tener que renderizar sin la milisegundos y el GMT-valor como este?

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

Es esto posible, o necesito hackear algún tipo de xsl/xpath-reemplazar-la magia después de la clase ha sido serializado?

No es una solución para cambiar el objeto a String, ya que se utiliza como un DateTime en el resto de la aplicación y nos permite crear un xml con la representación de un objeto mediante el uso de la clase XmlSerializer.Serialize() método.

La razón por la que necesita para quitar la extra de información en el campo es que el sistema de recepción no se ajusta a la recomendación del w3c normas para el tiempo de tipo de datos.

¿Fue útil?

Solución

Puede crear una propiedad de cadena que hace la traducción a partir de su fecha de campo y poner la serialización de atributo sobre el que, en lugar de la de la real propiedad DateTime que el resto de la aplicación.

Otros consejos

Poner [XmlIgnore] en el Momento de la propiedad.

A continuación, añadir una nueva propiedad:

[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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top