Binnen mijn applicatie heb ik een aantal entiteiten: Company, Person e.d.
De informatie van deze klassen wil ik geserializeerd hebben naar XML, zodat ik deze naar een service kan sturen die deze informatie toevoegd/aanpast in bijv. een database (deze service accepteert alleen XML).
Nu heb ik het volgende probleem: de Service wil bijvoorbeeld in het geval van booleans J en N binnenkrijgen ipv True en False. Daarnaast kan ik de Service ook voor informatie opvragen gebruiken en dan krijg ik bij booleans J en N terug. Hoe voer ik ten tijde van het serializeren/deserializeren deze conversie uit?
Ik maak nu gebruik van XmlSerializer in combinatie met de XmlElementAttribute, XmlArray e.d.
Denk aan:
Mijn echte code bestaat natuurlijk netjes met Fields, Constructors en Properties, maar dit is even ter illustratie. Hieronder mijn serialize methode:
Dit zal ongeveer dit geven:
Ik wil:
Weet iemand hoe je deze conversie plaats laat vinden tijdens het (de)serializen?
De informatie van deze klassen wil ik geserializeerd hebben naar XML, zodat ik deze naar een service kan sturen die deze informatie toevoegd/aanpast in bijv. een database (deze service accepteert alleen XML).
Nu heb ik het volgende probleem: de Service wil bijvoorbeeld in het geval van booleans J en N binnenkrijgen ipv True en False. Daarnaast kan ik de Service ook voor informatie opvragen gebruiken en dan krijg ik bij booleans J en N terug. Hoe voer ik ten tijde van het serializeren/deserializeren deze conversie uit?
Ik maak nu gebruik van XmlSerializer in combinatie met de XmlElementAttribute, XmlArray e.d.
Denk aan:
code:
1
2
3
4
5
6
7
8
9
| [XmlRoot("company")]
public class Company
{
[XmlElement("compName")]
public string Name = "Test Inc";
[XmlElement("checked"]
public bool Checked = false;
} |
Mijn echte code bestaat natuurlijk netjes met Fields, Constructors en Properties, maar dit is even ter illustratie. Hieronder mijn serialize methode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public static string Serialize(object obj) {
string xml;
XmlSerializerNamespaces xmlNameSpaces = new XmlSerializerNamespaces();
xmlNameSpaces.Add(String.Empty, String.Empty);
MemoryStream stream = new MemoryStream();
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(stream, obj, xmlNameSpaces);
xml = Encoding.UTF8.GetString(stream.ToArray());
stream.Close();
return xml;
} |
Dit zal ongeveer dit geven:
code:
1
2
3
4
| <company> <compName>Test Inc</compName> <checked>False</checked> </company> |
Ik wil:
code:
1
2
3
4
| <company> <compName>Test Inc</compName> <checked>N</checked> </company> |
Weet iemand hoe je deze conversie plaats laat vinden tijdens het (de)serializen?
[ Voor 5% gewijzigd door Zyphrax op 12-01-2005 10:23 ]
Any sufficiently advanced technology is equivalent to magic.