Formatieren bei XML serialization

16/12/2008 - 16:59 von Joelau | Report spam
Hallo!

Habe mit dem Tool "xsd.exe" aus einem XSD schema eine C# Datei generieren
lassen. Funktioniert bestens. Hier ist ein kleiner Ausschnitt des
auto-generierten codes:

[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="",
IsNullable=false)]
public partial class geogridOvl {

private decimal versionField;

public decimal version {
get {
return this.versionField;
}
set {
this.versionField = value;
}
}

Die Daten schreibe ich anschließend über einen XmlSerializer in eine XML
Datei:

XmlSerializer s = new XmlSerializer (typeof (geogridOvl));
s.Serialize (fsXml, xmlData);

Das ergibt folgende xml Ausgabe:

<?xml version="1.0"?>
<geogridOvl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<version>5</version>
usw...

Jetzt das Problem: Die Variable "version" ist vom Typ decimal und hat den
Wert 5 und wird so auch in die XML datei geschrieben. Es ist aber zwingend
erforderlich, dass in der XML Datei der Werzt mit einer Nachkommastelle als
<version>5.0</version>
ausgegeben wird. Wie kann ich auf die Formatierung bei der XmlSerialisierung
Einfluss nehmen?

Danke für eine Antwort!
Gruß
Jörg
 

Lesen sie die antworten

#1 Frank Dzaebel
16/12/2008 - 20:45 | Warnen spam
Hallo Joelau,

Habe mit dem Tool "xsd.exe" aus einem XSD schema eine C# Datei
generieren lassen. Funktioniert bestens. Hier ist ein kleiner
Ausschnitt des auto-generierten codes:
... public decimal version {
ergibt dann ... <version>5</version>
Es ist aber zwingend erforderlich, dass in der XML
Datei der Werzt mit einer Nachkommastelle als
<version>5.0</version>
ausgegeben wird.



Bei mir wird trotz gleicher Vorgehensweise wie
Du wünschst:
<version>5.0</version>
hereingeschrieben. Hier ein Beispiel:

http://Dzaebel.NET/Downloads\XmlXsdDecimal.zip

Ansonsten hast Du es ja analog folgendem gemacht:

[Aus XML mittels XSD.exe automatisch Schreib-Lese-Zugriffe generieren]
http://dzaebel.net/XmlXsdLesenSchreiben.htm

[Mit dem XmlSerializer eigene Objekte serialisieren und deserialisieren]
http://dzaebel.net/XmlSerializer.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen