XML Nullwerte
-
Guten Morgen!
ich habe ein kleines problem mit meinem XML. Und zwar habe ich ein kleines Tool entwickelt, in dem ich eine CSV Datei in eine XML Datei konvertiere.
Dass funktionniert auch alles, nun soll diese XML datei eine xsd Datei respektieren. Auch OK.
Ich hbae in der XML Datei die werte auf nillable = true gestellt. Wenn ich jedoch in meiner XML Datei einen Nullwert habe, bekomme ich einen Fehler, da ich bei den Elementen xsi:nil = "true" setzen muss.
Wie kann ich dies machen? hier mein Code :
while (sLigne != null && result=="") { zeile = sLigne.Split(_separator); if (zeile.Length > csvDataTable.Columns.Count) { result = "In der Quelldatei sind mehr Datensetze als erwartet"; } else { csvDataTable.Rows.Add(sLigne.Split(_separator)); sLigne = stream.ReadLine(); } } if (result == "") { verifyItem(csvDataTable); csvDataSet.Tables.Add(csvDataTable); // XML wird geschrieben doc = new XmlDocument(); doc.InnerXml = csvDataSet.GetXml();
So sieht die generierte xml aus :
<Addresses> <Address> <Lastname>achtung</Lastname> <Firstname>xdcfgt</Firstname> <Birthdate /> hier kommt ein Fehler <SexId>2</SexId> <MaritalStatusId>1</MaritalStatusId> <LanguageId /> hier kommt ein Fehler es sollte sein <LanguageId xsi:nil = "true"/> <Address>3 Grande rue</Address> <Address_add /> <Country_ISO>FR</Country_ISO> <ZipCode>68000</ZipCode> <Location>Colmar</Location> <PhonePrivate>123456789</PhonePrivate> <PhoneBusiness>01712569875</PhoneBusiness> <Mobile>01712569875</Mobile> <EMail>Cel@Muster.com</EMail> </Address> </Addresses>
Habt Ihr eine Idee wie ich es setzen könnte, habe es schon mit den Atrribute versucht.. aber funktionniert nicht.
Viele Grüsse,
Céline
-
Habe es herausgefunden :
doc ist das XMLDocumentdoc.DocumentElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); XmlAttribute xsinil = doc.CreateAttribute("xsi:nil", "http://www.w3.org/2001/XMLSchema-instance"); xsinil.Value = "true"; XmlElement root = doc.DocumentElement; foreach (XmlNode node in root.ChildNodes) { foreach (XmlNode child in node.ChildNodes) { if (child.HasChildNodes==false) { child.Attributes.SetNamedItem(xsinil); } } }
Gruss
Céline