Domanda

Ho creato un file di classe C# utilizzando un file XSD come input.Una delle mie proprietà assomiglia a questa:

 private System.DateTime timeField;

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

Una volta serializzato, il contenuto del file ora appare così:

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

È possibile, con XmlAttributes sulla proprietà, visualizzarlo senza i millisecondi e il valore GMT in questo modo?

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

È possibile o devo mettere insieme una sorta di xsl/xpath-replace-magic dopo che la classe è stata serializzata?

Non è una soluzione per cambiare l'oggetto in String, perché viene utilizzato come DateTime nel resto dell'applicazione e ci consente di creare una rappresentazione xml da un oggetto utilizzando il metodo XmlSerializer.Serialize().

Il motivo per cui devo rimuovere le informazioni extra dal campo è che il sistema ricevente non è conforme agli standard w3c per il tipo di dati temporale.

È stato utile?

Soluzione

Potresti creare una proprietà stringa che esegua la traduzione nel/dal campo timeField e inserire l'attributo di serializzazione su quella invece della vera proprietà DateTime utilizzata dal resto dell'applicazione.

Altri suggerimenti

Inserisci [XmlIgnore] nella proprietà Time.

Quindi aggiungi una nuova proprietà:

[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); }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top