/// <summary>
        /// XMLファイルからパラメータを読み込む
        /// </summary>
        /// <typeparam name="T">
        /// 読み込むパラメータ型.シリアライズ可能なものである必要がある.
        /// </typeparam>
        /// <param name="trg">出力引数.読み込んだデータを設定する対象.</param>
        /// <param name="fn">XMLのファイル名</param>
        static public void LoadFromXmlFile <T>(out T trg, string fn)
        {
            try
            {
                //読み込むファイルを開く
                global::System.IO.FileStream fs = new global::System.IO.FileStream(
                    fn, global::System.IO.FileMode.Open, global::System.IO.FileAccess.Read);

                //XmlSerializerオブジェクトを作成
                global::System.Xml.Serialization.XmlSerializer serializer =
                    new global::System.Xml.Serialization.XmlSerializer(typeof(T));
                //XMLファイルから読み込み、逆シリアル化する
                T obj = (T)serializer.Deserialize(fs);
                //ファイルを閉じる
                fs.Close();

                // modified 2014, Apr 30 by Okuda,
                // Is it OK??
                //trg = DeepClone<T>(obj);
                trg = obj;
            }
            catch
            {
                trg = default(T);
            }
        }
示例#2
0
        public string Serialize <T>(T obj, params string[] properties) where T : new()
        {
            global::System.Xml.Serialization.XmlSerializer serializer;
            if (properties.Length > 0)
            {
                XmlAttributeOverrides overrides = new XmlAttributeOverrides();
                foreach (var pinfo in obj.GetType().GetProperties().Where(x => !properties.Contains(x.Name)))
                {
                    overrides.Add(typeof(T), pinfo.Name, new XmlAttributes()
                    {
                        XmlIgnore = true
                    });
                }
                serializer = new global::System.Xml.Serialization.XmlSerializer(typeof(T), overrides);
            }
            else
            {
                serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
            }

            using (MemoryStream ms = new MemoryStream())
                using (StreamReader reader = new StreamReader(ms))
                {
                    serializer.Serialize(ms, obj);
                    ms.Position = 0;
                    string result = reader.ReadToEnd();
                    return(result);
                }
        }
        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);
        }
示例#4
0
 internal static global::System.Xml.Serialization.XmlSerializer GetSerializer(global::System.Type type)
 {
     object[] args = new object[] {
         type
     };
     global::System.Xml.Serialization.XmlSerializer ret = ((global::System.Xml.Serialization.XmlSerializer)(m_privateType.InvokeStatic("GetSerializer", new System.Type[] {
         typeof(global::System.Type)
     }, args)));
     return(ret);
 }
示例#5
0
        public object DeserializeObject(string value, Type t)
        {
            var serializer = new global::System.Xml.Serialization.XmlSerializer(t);

            using (TextReader reader = new StringReader(value))
            {
                object result = serializer.Deserialize(reader);
                return(result);
            }
        }
        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();
        }
示例#8
0
        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);
                }
        }
        public T DeserializeUnmarshall <T>(string text)
        {
            global::System.Xml.Serialization.XmlSerializer serializer = null;
            serializer = new global::System.Xml.Serialization.XmlSerializer(typeof(T));

            T result = default(T);

            using (global::System.IO.TextReader r = new global::System.IO.StringReader(text))
            {
                result = (T)serializer.Deserialize(r);
            }

            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");
     }
 }
        /// <summary>
        /// Streamからパラメータを読み込む
        /// </summary>
        /// <typeparam name="T">
        /// 読み込むパラメータ型.シリアライズ可能なものである必要がある.
        /// </typeparam>
        /// <param name="trg">出力引数.読み込んだデータを設定する対象.</param>
        /// <param name="stream">読み込むStream</param>
        static public void LoadFromStream <T>(out T trg, global::System.IO.TextReader s)
        {
            try
            {
                //XmlSerializerオブジェクトを作成
                global::System.Xml.Serialization.XmlSerializer serializer =
                    new global::System.Xml.Serialization.XmlSerializer(typeof(T));
                //streamファイルから読み込み、逆シリアル化する
                T obj = (T)serializer.Deserialize(s);
                //ファイルを閉じる
                s.Close();

                // modified 2014, Apr 30 by Okuda,
                // Is it OK??
                //trg = DeepClone<T>(obj);
                trg = obj;
            }
            catch
            {
                trg = default(T);
            }
        }
示例#12
0
		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");
		}