Hi all,
prenašam strežniško aplikacijo (pisana v .NET Fx 1.1, remoting) na .NET Fx 2.0. Podatkovni tipi so večinoma (tipizirani) DateSet-i, ki se na strani odjemalca prikazujejo s pomočjo XSLT transformacij. Naletel sem na manjši problem, zelo nerad pa bi spreminjal obstoječe XSLT transformacije.
Enostaven programček za test:
...
DataSet ds = new DataSet("Test");
ds.Locale = new CultureInfo("sl-SI");
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
ds.Tables.Add(dt);
for (int ii=0; ii<2; ii++) {
DataRow dr = dt.NewRow();
dr["ID"] = ii;
dr["Name"] = string.Format("Name{0}", ii);
dr["Date"] = new DateTime(2000,12,31,23,59,59);
dt.Rows.Add(dr);
}
ds.AcceptChanges();
Console.WriteLine(ds.GetXml());
...
a) rezultat Fx 1.1:
<Test>
<Table1>
<ID>0</ID>
<Name>Name0</Name>
<Date>2000-12-31T23:59:59.0000000+01:00</Date>
</Table1>
<Table1>
<ID>1</ID>
<Name>Name1</Name>
<Date>2000-12-31T23:59:59.0000000+01:00</Date>
</Table1>
</Test>
b) rezultat Fx 2.0:
<Test>
<Table1>
<ID>0</ID>
<Name>Name0</Name>
<Date>2000-12-31T23:59:59+01:00</Date>
</Table1>
<Table1>
<ID>1</ID>
<Name>Name1</Name>
<Date>2000-12-31T23:59:59+01:00</Date>
</Table1>
</Test>
V primeru, da podamo datum, ki vsebuje tudi milisekunde, je izpis v obeh primerih enak:
...
dr["Date"] = DateTime.Now;
..
<Date>2006-03-08T11:06:44.7470188+01:00</Date>
...
DataSet 1.1 vedno serializira (preko GetXml() metode) tip DateTime v obliko CCYY-MM-DDThh:mm:ss.0000000Z, DataSet 2.0 pa brez zadnjih sedmih ničel, če mu ne podamo tudi milisekund. Ker v moji kodi za tip DateTime nikoli ni vrednosti z milisekundatmi oz. so enake 0, zadnjih sedmih ničel v XML elementu ni, tak format pa pričakuje XSLT transformacija... Poskušal sem z različnimi globalizacijami, Column.DateTimeMode, DateTimeKind, pa ne pomaga.
Ima kdo kak namig? Sicer sem tik pred tem, da se z Reflectorjem potopim v metodo GetXml() za 1.1 in 2.0...
Hvala & lp,
Damjan
fluethy - četrtek, 29. avgust 2024
Light orange hard gelatin capsules, imprinted with black ink A012 on the cap and PREG 200 on the body; available in <a href=https://enhanceyourlife.mom/>priligy and cialis together</a> Pralsetinib Gavreto