public async Task <string> SerializeMarshallAsync <T>(T t) { // if you can, only create one serializer // creating serializers is an expensive // operation and can be slow global::System.Xml.Serialization.XmlSerializer serializer = null; serializer = new global::System.Xml.Serialization.XmlSerializer(typeof(T)); // we will write the our result to memory //await using global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); // the string will be utf8 encoded //await using global::System.IO.StreamWriter writer = new global::System.IO.StreamWriter ( stream, global::System.Text.Encoding.UTF8 ); // here we go! serializer.Serialize(writer, t); // flush our write to make sure its all there await writer.FlushAsync(); // reset the stream back to 0 stream.Position = 0; using global::System.IO.StreamReader reader = new global::System.IO.StreamReader(stream); string xml = await reader.ReadToEndAsync(); return(xml); }
public void XmlSerializerExtension() { DateTime date = new DateTime(2007, 5, 22); global::System.Xml.Serialization.XmlSerializer xs = new global::System.Xml.Serialization.XmlSerializer(typeof(Content)); Content item = new Content(); string item_object = "Content"; // tag name for serialized object // fill object with some data item.author = author; item.comment = comment; item.date = date; XmlSyndicationContent se = new XmlSyndicationContent(type, item, xs); Assert.AreEqual(typeof(XmlSyndicationContent), se.GetType(), "#SE1"); Assert.AreEqual(type, se.Type.ToString(), "#SE2"); Assert.AreSame(item, se.Extension.Object, "#SE3"); Assert.AreEqual(SyndicationElementExtensionKind.XmlSerializer, se.Extension.ExtensionKind, "#SE4"); Assert.AreSame(xs, se.Extension.ObjectSerializer, "#SE5"); // Create fake IO using stringbuilders StringBuilder object_string = new StringBuilder(); StringBuilder syndication_string = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); XmlWriter serobj = XmlWriter.Create(object_string, settings); XmlWriter syndication = XmlWriter.Create(syndication_string, settings); xs.Serialize(serobj, item); se.WriteTo(syndication, documentname, ""); serobj.Close(); syndication.Close(); // Pickout the 'Content' tag from original serialized object and syndicated document XmlDocument syndoc = new XmlDocument(); XmlDocument serdoc = new XmlDocument(); syndoc.LoadXml(syndication_string.ToString()); XmlNodeList synresult = syndoc.GetElementsByTagName(item_object); XmlNodeList syntype = syndoc.GetElementsByTagName(documentname); serdoc.LoadXml(object_string.ToString()); XmlNodeList serresult = serdoc.GetElementsByTagName(item_object); // Check document type Assert.AreEqual(type, syntype.Item(0).Attributes.GetNamedItem("type").Value.ToString(), "SE6"); // Check content Assert.AreEqual(serresult.Item(0).OuterXml.ToString(), synresult.Item(0).OuterXml.ToString(), "SE6"); }
/// <summary> /// パラメータファイルをstreamにシリアライズして書き出す. /// </summary> /// <typeparam name="T">パラメータ型.シリアライズ可能な型が必要.</typeparam> /// <param name="trg">書き出す対象となるパラメータクラスor構造体</param> /// <param name="stream">書き出すStream</param> static public void WriteToStream <T>(T trg, global::System.IO.TextWriter s) { //XmlSerializerオブジェクトを作成 //オブジェクトの型を指定する global::System.Xml.Serialization.XmlSerializer serializer = new global::System.Xml.Serialization.XmlSerializer(typeof(T)); //シリアル化し、XMLファイルに保存する serializer.Serialize(s, trg); //ファイルを閉じる s.Close(); }
public string SerializeObject(object obj) { var serializer = new global::System.Xml.Serialization.XmlSerializer(obj.GetType()); using (MemoryStream ms = new MemoryStream()) using (StreamReader reader = new StreamReader(ms)) { serializer.Serialize(ms, obj); string result = reader.ReadToEnd(); return(result); } }
/// <summary> /// パラメータファイルをXMLファイルにシリアライズして書き出す. /// </summary> /// <typeparam name="T">パラメータ型.シリアライズ可能な型が必要.</typeparam> /// <param name="trg">書き出す対象となるパラメータクラスor構造体</param> /// <param name="fn">書き出すXMLファイル名</param> static public void WriteToXmlFile <T>(T trg, string fn) { //XmlSerializerオブジェクトを作成 //オブジェクトの型を指定する global::System.Xml.Serialization.XmlSerializer serializer = new global::System.Xml.Serialization.XmlSerializer(typeof(T)); try { //書き込むファイルを開く global::System.IO.FileStream fs = new global::System.IO.FileStream( fn, global::System.IO.FileMode.Create); //シリアル化し、XMLファイルに保存する serializer.Serialize(fs, trg); //ファイルを閉じる fs.Close(); } catch (Exception) { global::System.Windows.Forms.MessageBox.Show("設定ファイル" + fn + "が書き込みモードで開けません.", "Error"); } }
public void XmlSerializerExtension () { DateTime date = new DateTime (2007, 5, 22); global::System.Xml.Serialization.XmlSerializer xs = new global::System.Xml.Serialization.XmlSerializer (typeof (Content)); Content item = new Content (); string item_object = "Content"; // tag name for serialized object // fill object with some data item.author = author; item.comment = comment; item.date = date; XmlSyndicationContent se = new XmlSyndicationContent (type,item,xs); Assert.AreEqual (typeof (XmlSyndicationContent), se.GetType (), "#SE1"); Assert.AreEqual (type, se.Type.ToString (), "#SE2"); Assert.AreSame (item, se.Extension.Object, "#SE3"); Assert.AreEqual (SyndicationElementExtensionKind.XmlSerializer, se.Extension.ExtensionKind, "#SE4"); Assert.AreSame (xs, se.Extension.ObjectSerializer, "#SE5"); // Create fake IO using stringbuilders StringBuilder object_string = new StringBuilder (); StringBuilder syndication_string = new StringBuilder (); XmlWriterSettings settings = new XmlWriterSettings (); XmlWriter serobj = XmlWriter.Create (object_string, settings); XmlWriter syndication = XmlWriter.Create (syndication_string, settings); xs.Serialize (serobj, item); se.WriteTo (syndication, documentname, ""); serobj.Close (); syndication.Close (); // Pickout the 'Content' tag from original serialized object and syndicated document XmlDocument syndoc = new XmlDocument (); XmlDocument serdoc = new XmlDocument (); syndoc.LoadXml (syndication_string.ToString ()); XmlNodeList synresult = syndoc.GetElementsByTagName (item_object); XmlNodeList syntype = syndoc.GetElementsByTagName (documentname); serdoc.LoadXml (object_string.ToString ()); XmlNodeList serresult = serdoc.GetElementsByTagName (item_object); // Check document type Assert.AreEqual(type, syntype.Item (0).Attributes.GetNamedItem ("type").Value.ToString (), "SE6"); // Check content Assert.AreEqual (serresult.Item (0).OuterXml.ToString (), synresult.Item (0).OuterXml.ToString (), "SE6"); }