Salut,
Je tente de désérialiser le contenu d'un flux xml provenant d'un service NT à partir d'une application mobile, mais le résultat est l'exception suivante :
System.InvalidOperationException
Message : "There is an error in XML document (42, 6)."
System.ArgumentException
InnerException : "DataTable 'http://tempuri.org/UHTSet.xsd:GetBatch' does not match to any DataTable in source."
J'ai comparer la sérialisation d'un même objet à partir du framework et du compact framework, et les résultat sont différent!!! Y à t'il une solution pour partager des contenus xml entre les deux framework?
Voici la classe que j'utilise dans les deux cas.
public class IsServiceStream { DataTable tableStream; public DataTable TableStream { get { return tableStream; } set { tableStream = value; } } int tag; public int Tag { get { return tag; } set { tag = value; } } public IsServiceStream() { tableStream = null; tag = 0; } public byte[] GetBuffer() { MemoryStream stm = new MemoryStream(); StreamWriter wr = new StreamWriter(stm, System.Text.Encoding.UTF8); XmlSerializer xs = new XmlSerializer(typeof(IsServiceStream)); XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); xs.Serialize(wr, this, ns); return stm.GetBuffer(); } public static IsServiceStream FromBuffer(byte[] buf) { MemoryStream stm = new MemoryStream(buf); StreamReader wr = new StreamReader(stm, System.Text.Encoding.UTF8); XmlSerializer xs = new XmlSerializer(typeof(IsServiceStream)); IsServiceStream tmp = (IsServiceStream)xs.Deserialize(wr); return tmp; } public IsServiceStream Clone() { IsServiceStream newStream = new IsServiceStream(); newStream.tableStream = tableStream.Clone(); newStream.tag = tag; return newStream; } }
Le résultat XML du framework windows:
<?xml version="1.0" encoding="utf-8"?>
70249
070249
2007-09-07T09:48:35+02:00
2007-02-19T18:45:21+01:00
Mitchmilk 0 BK SR 1 L
202101
2007-02-19T09:48:35+01:00
70273
070273
2007-08-22T10:11:06+02:00
2007-02-23T13:04:17+01:00
FELAIT 15 BK SR 1 L
201142
2007-02-23T10:11:06+01:00
70284
070284
2007-08-24T08:12:46+02:00
2007-02-25T15:32:44+01:00
LONG LIFE 15 BK SR 1L
201075
2007-02-25T08:12:46+01:00
1
Le résultat du compact framework :
<?xml version="1.0" encoding="utf-8"?>
0
lot
2007-08-21T10:53:35+02:00
2007-08-21T10:53:35+02:00
label
0
2007-08-21T10:53:35+02:00
0
A croire que la sérialisation n'est pas faite de la même manière pour une raison que j'ignore ...
Ecrire toi même une fonctionnalité de sérialisation commune au deux Framework ?