Frage

Ich habe eine C # Klassendatei erstellt, indem eine XSD-Datei als Eingabe. Eine meiner Eigenschaften wie folgt aussehen:

 private System.DateTime timeField;

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

Wenn serialisiert, wird der Inhalt der Datei sieht nun wie folgt aus:

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

Ist es möglich, mit XmlAttributes auf dem Grundstück, um es ohne die Millisekunden zu machen und den GMT-Wert wie das?

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

Ist das möglich, oder muss ich zusammen eine Art von xsl / XPath-ersetzen-Magie hacken müssen, nachdem die Klasse serialisiert wurde?

Es ist keine Lösung, um das Objekt zu String zu ändern, weil es wie ein Datetime in dem Rest der Anwendung verwendet wird, und ermöglicht es uns, eine XML-Darstellung von einem Objekt zu erstellen, indem die XmlSerializer.Serialize () Methode verwendet.

Der Grund, ich brauche die zusätzliche Informationen aus dem Feld zu entfernen ist, dass das Empfangssystem nicht auf die w3c-Standards für den Zeit-Datentyp nicht entspricht.

War es hilfreich?

Lösung

Sie könnten eine String-Eigenschaft erstellen, die die Übersetzung zu / von Ihrem Timefield Feld tut und auf dieser Stelle die Serialisierung Attribut legen Sie die die reale Datetime-Eigenschaft, dass der Rest der Anwendung verwendet.

Andere Tipps

Setzen Sie [XmlIgnore] auf der Zeit Eigenschaft.

Dann eine neue Eigenschaft hinzufügen:

[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); }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top