কোনও বস্তুকে স্ট্রিংয়ে সিরিয়াল করুন


311

কোনও ফাইলকে একটি অবজেক্ট সংরক্ষণ করার জন্য আমার কাছে নিম্নলিখিত পদ্ধতি রয়েছে:

// Save an object out to the disk
public static void SerializeObject<T>(this T toSerialize, String filename)
{
    XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());
    TextWriter textWriter = new StreamWriter(filename);

    xmlSerializer.Serialize(textWriter, toSerialize);
    textWriter.Close();
}

আমি স্বীকার করি যে আমি এটি লিখি নি (আমি কেবল এটি একটি এক্সটেনশন পদ্ধতিতে রূপান্তর করেছি যা কোনও ধরণের প্যারামিটার নিয়েছিল)।

এখন আমার কাছে এটি দরকার যে এক্সএমএলটি স্ট্রিং হিসাবে আমাকে ফিরিয়ে দেওয়া (এটি কোনও ফাইলে সংরক্ষণ করার চেয়ে)। আমি এটি সন্ধান করছি, কিন্তু আমি এখনও এটি খুঁজে না।

আমি ভেবেছিলাম এই জিনিসগুলির সাথে পরিচিত কারও পক্ষে এটি খুব সহজ হতে পারে। যদি না হয় আমি অবশেষে এটি বের করব।

উত্তর:


530

এর StringWriterপরিবর্তে একটি ব্যবহার করুন StreamWriter:

public static string SerializeObject<T>(this T toSerialize)
{
    XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());

    using(StringWriter textWriter = new StringWriter())
    {
        xmlSerializer.Serialize(textWriter, toSerialize);
        return textWriter.ToString();
    }
}

দ্রষ্টব্য, এক্সএমএসআরশিয়াল কনস্ট্রাক্টরের toSerialize.GetType()পরিবর্তে ব্যবহার করা গুরুত্বপূর্ণ typeof(T): আপনি যদি প্রথমটি ব্যবহার করেন তবে কোডটি সমস্ত সম্ভাব্য সাবক্লাসগুলি T(যা পদ্ধতির জন্য বৈধ) কভার করে, অন্যটি ব্যবহার করে যখন প্রাপ্ত কোনও প্রকারটি পাস করার সময় ব্যর্থ হয় T। এখানে কয়েকটি উদাহরণ কোডের সাথে একটি লিঙ্ক দেওয়া হয়েছে যা এই বিবৃতিটিকে প্রেরণা জোগায়, যখন ব্যবহার করা হয় তখন XmlSerializerনিক্ষেপ করে , কারণ আপনি উদ্ভূত প্রকারের উদাহরণটি এমন কোনও পদ্ধতির কাছে পাঠান যা ডেরাইভেড টাইপের বেস ক্লাসে সংজ্ঞায়িত সিরিয়ালাইজবজেক্টকে কল করে: http: // আদর্শ .com / 1Z5J1Exceptiontypeof(T)

এছাড়াও, আইডিয়ন কোড চালাতে মনো ব্যবহার করে; প্রকৃত Exceptionআপনি মাইক্রোসফট .NET রানটাইম ব্যবহার পেতে হবে একটি ভিন্ন হয়েছে MessageIdeone দেখানো একটির, কিন্তু এটা ঠিক একই ব্যর্থ।


2
@ জনসন্ডার্স: ঠিক আছে, এই আলোচনাটি মেটাতে সরিয়ে নেওয়া ভাল ধারণা। এই সম্পাদনাটি সম্পর্কে আমি কেবল মেটা স্ট্যাক ওভারফ্লোতে পোস্ট করা প্রশ্নের লিঙ্কটি এখানে ।
ফুলভিও

27
@ ক্যাস্পারওন গাইস, দয়া করে আমার উত্তর দিয়ে গোলযোগ বন্ধ করুন। বিষয়টি হ'ল স্ট্রিম রাইটারের পরিবর্তে স্ট্রিং রাইটার ব্যবহার করা, অন্য সব কিছুই প্রশ্নের সাথে প্রাসঙ্গিক নয়। আপনি যেমন বিস্তারিত আলোচনা করতে চান typeof(T) বনাম toSerialize.GetType(), তাই দয়া করে, কিন্তু আমার উত্তর না। ধন্যবাদ।
ডিটিবি

9
@ ডিটিবি দুঃখিত, তবে স্ট্যাক ওভারফ্লো যৌথভাবে সম্পাদিত হয়েছে । এছাড়াও, এই নির্দিষ্ট উত্তরটি মেটা নিয়ে আলোচনা করা হয়েছে , সুতরাং সম্পাদনাটি দাঁড়িয়েছে। আপনি যদি অসম্মতি প্রকাশ করেন তবে দয়া করে আপনার উত্তরটি কেন একটি বিশেষ কেস এবং যৌথভাবে সম্পাদনা করা উচিত নয় সে বিষয়ে মেটাতে পোস্টটির উত্তর দিন ।
ক্যাসপারওনে

2
কোডওয়াইজ, এটি সবচেয়ে সংক্ষিপ্ত উদাহরণ আমি দেখেছি। +1
ব্যাঙিথেফ্রোগ

13
স্ট্রিং রাইটার আইডিস্পোজেবল প্রয়োগ করে, তাই ব্যবহারের ব্লকে আবদ্ধ হওয়া উচিত।
ট্রুউইল

70

আমি জানি এটি সত্যই কোনও প্রশ্নের উত্তর নয়, তবে প্রশ্নের ভোট এবং গৃহীত উত্তরের উপর ভিত্তি করে আমার সন্দেহ হয় যে লোকেরা আসলে কোনও স্ট্রিংয়ের জন্য কোনও বস্তুকে সিরিয়াল করতে কোডটি ব্যবহার করছে।

এক্সএমএল সিরিয়ালাইজেশন ব্যবহার করে আউটপুটটিতে অপ্রয়োজনীয় অতিরিক্ত পাঠ্য আবর্জনা যুক্ত করে।

নিম্নলিখিত শ্রেণীর জন্য

public class UserData
{
    public int UserId { get; set; }
}

এটি উত্পন্ন

<?xml version="1.0" encoding="utf-16"?>
<UserData xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <UserId>0</UserId>
</UserData>

জেএসওএন সিরিয়ালাইজেশন ব্যবহার করা সবচেয়ে ভাল সমাধান ( সেরাগুলির মধ্যে একটি হ'ল জসন.এনইটি )। কোনও বস্তুকে সিরিয়ালাইজ করতে:

var userData = new UserData {UserId = 0};
var userDataString = JsonConvert.SerializeObject(userData);

কোনও অবজেক্টের ডিসাইরিয়ালাইজ করতে:

var userData = JsonConvert.DeserializeObject<UserData>(userDataString);

সিরিয়ালযুক্ত জেএসওএন স্ট্রিংয়ের মতো দেখতে পাবেন:

{"UserId":0}

4
এক্ষেত্রে আপনি ঠিক বলেছেন তবে আপনি কি বড় এক্সএমএল নথি এবং বড় জেএসওএন নথি দেখেছেন documents JSON নথিটি খুব কমই পঠনযোগ্য। আপনি যে "আবর্জনা" নিয়ে কথা বলছেন যেমন নেমস্পেসগুলি দমন করা যায়। উত্পন্ন এক্সএমএল JSON এর মতো পরিষ্কার হতে পারে তবে JSON এর মতো সবসময় বেশি পঠনযোগ্য। পঠনযোগ্যতা JSON এর উপরে একটি বড় সুবিধা।
হারমান ভ্যান ডের ব্লুম

2
আপনি যদি "জসন অনলাইন পার্সার" এর জন্য অনলাইনে অনুসন্ধান করেন তবে আপনি এমন কিছু অনলাইন জসন পার্সার পাবেন যা জসন স্ট্রিংকে আরও মানব পাঠযোগ্য উপায়ে ফর্ম্যাট করতে পারে।
xhafan

9
@ হারমানভানডারবার্লম এক্সএমএল জেএসএনের চেয়ে বেশি পঠনযোগ্য? পৃথিবীতে আপনি কি ধূমপান করছেন? এটি এক্সএমএলের চেয়ে জেএসএনের অন্যতম শক্তিশালী সুবিধা: উচ্চতর সংকেত / শব্দের অনুপাতের কারণে এটি পড়া সহজ far সোজা কথায়, JSON এর সাথে সামগ্রীটি স্যুপ স্যুপে নিমজ্জিত হচ্ছে না!
ম্যাসন হুইলার 21

63

সিরিয়ালাইজ এবং ডেসরিয়ালাইজ (এক্সএমএল / জেএসএন):

    public static T XmlDeserialize<T>(this string toDeserialize)
    {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
        using(StringReader textReader = new StringReader(toDeserialize))
        {      
            return (T)xmlSerializer.Deserialize(textReader);
        }
    }

    public static string XmlSerialize<T>(this T toSerialize)
    {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
        using(StringWriter textWriter = new StringWriter())
        {
            xmlSerializer.Serialize(textWriter, toSerialize);
            return textWriter.ToString();
        }
    }

    public static T JsonDeserialize<T>(this string toDeserialize)
    {
        return JsonConvert.DeserializeObject<T>(toDeserialize);
    }

    public static string JsonSerialize<T>(this T toSerialize)
    {
        return JsonConvert.SerializeObject(toSerialize);
    }

15
অন্যান্য উত্তরগুলির বিপরীতে কীভাবে ডিসরিয়ালাইজ করা যায় তা দেখানোর জন্যও +1। ধন্যবাদ!
মারাত্মক ডগ

6
একটি ছোট পরিবর্তন যদিও অবজেক্টের পরিবর্তে টি প্রদান করে, এবং প্রত্যাবর্তিত অবজেক্টটি টিতে DeserializeObject ফাংশনে ফেলে দেয়। এইভাবে জেনেরিক বস্তুর পরিবর্তে দৃ strongly়ভাবে টাইপ করা বস্তুটি ফিরে আসে।
মারাত্মক ডগ

ধন্যবাদ @ ডেডলিডগ, আমি স্থির করেছি।
এডিএম-আইটি

3
পাঠ্য লেখকের একটি ডিসপোজ () ফাংশন রয়েছে যা কল করা উচিত। সুতরাং আপনি ব্যবহার বিবৃতি ভুলে যাচ্ছেন।
হারমান ভ্যান ডের ব্লুম

38

কোড সুরক্ষা নোট

সংক্রান্ত গৃহীত উত্তর এটি ব্যবহার করা জরুরী toSerialize.GetType()পরিবর্তে typeof(T)মধ্যে XmlSerializerকন্সট্রাকটর: আপনি আধুনিক এক ব্যবহার করার সময়, প্রথম এক কোড সম্ভাব্য সব পরিস্থিতিতে জুড়ে ব্যবহার কখনো কখনো ব্যর্থ।

এখানে কয়েকটি উদাহরণ কোডের সাথে একটি লিঙ্ক দেওয়া হয়েছে যা এই বিবৃতিটিকে অনুপ্রেরণা XmlSerializerজোগায়, যখন typeof(T)ব্যবহৃত হয় তখন একটি ব্যাতিক্রম ছুঁড়ে দেওয়া হয়, কারণ আপনি উদ্ভূত প্রকারের উদাহরণটি এমন কোনও পদ্ধতির কাছে পাঠান যা কল করে SerializeObject<T>()যে ডাইরেক্ট টাইপের বেস ক্লাসে সংজ্ঞায়িত: http: // আদর্শ .com / 1Z5J1নোট করুন আইডিয়ন কোডটি কার্যকর করতে মনো ব্যবহার করে: মাইক্রোসফ্ট। নেট রানটাইমটি আইডিয়নে প্রদর্শিত বার্তার চেয়ে আলাদা বার্তা রয়েছে তবে এটি কেবল একই রকম ব্যর্থ।

সম্পূর্ণতার স্বার্থে আমি এখানে পুরো কোডের নমুনাটি ভবিষ্যতের রেফারেন্সের জন্য পোস্ট করি, কেবলমাত্র আইডিয়ন (যেখানে আমি কোডটি পোস্ট করেছি) ভবিষ্যতে অনুপলব্ধ হয়ে উঠেছে:

using System;
using System.Xml.Serialization;
using System.IO;

public class Test
{
    public static void Main()
    {
        Sub subInstance = new Sub();
        Console.WriteLine(subInstance.TestMethod());
    }

    public class Super
    {
        public string TestMethod() {
            return this.SerializeObject();
        }
    }

    public class Sub : Super
    {
    }
}

public static class TestExt {
    public static string SerializeObject<T>(this T toSerialize)
    {
        Console.WriteLine(typeof(T).Name);             // PRINTS: "Super", the base/superclass -- Expected output is "Sub" instead
        Console.WriteLine(toSerialize.GetType().Name); // PRINTS: "Sub", the derived/subclass

        XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
        StringWriter textWriter = new StringWriter();

        // And now...this will throw and Exception!
        // Changing new XmlSerializer(typeof(T)) to new XmlSerializer(subInstance.GetType()); 
        // solves the problem
        xmlSerializer.Serialize(textWriter, toSerialize);
        return textWriter.ToString();
    }
}

12
using (StringWriter textWriter = new StringWriter() {}অবজেক্টটি সঠিকভাবে বন্ধ / নিষ্পত্তি করার জন্য আপনারও করা উচিত ।
মায়াজেবল

আমি আপনার সাথে সম্পূর্ণভাবে একমত আমি আমার কোডের নমুনাটি যতটা সম্ভব ওপি একের নিকটে রাখার চেষ্টা করেছি, যাতে আমার পয়েন্টটি হাইলাইট করার জন্য যা বস্তুর ধরণের সমস্ত বিষয়। যাইহোক যে কাউকে মনে রাখা ভাল যে usingবিবৃতিটি আমাদের এবং আমাদের প্রিয় IDisposableপ্রয়োগকারী বস্তুর উভয়েরই সেরা বন্ধু ;)
ফুলভিও

"এক্সটেনশন পদ্ধতিগুলি কোনও নতুন উত্পন্ন প্রকার তৈরি না করা, পুনরায় সংশ্লেষ করা, বা অন্যথায় মূল প্রকারটি পরিবর্তন না করে বিদ্যমান প্রকারগুলিতে পদ্ধতিগুলিকে" যুক্ত "করতে সক্ষম করে। এমএসডিএন.মাইক্রোসফট.এইনস
অ্যাড্রিয়ান

12

আমার 2 পি ...

        string Serialise<T>(T serialisableObject)
        {
            var xmlSerializer = new XmlSerializer(serialisableObject.GetType());

            using (var ms = new MemoryStream())
            {
                using (var xw = XmlWriter.Create(ms, 
                    new XmlWriterSettings()
                        {
                            Encoding = new UTF8Encoding(false),
                            Indent = true,
                            NewLineOnAttributes = true,
                        }))
                {
                    xmlSerializer.Serialize(xw,serialisableObject);
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
            }
        }

এক্সএমএল রাইটারসেটিংস () ব্যবহারের জন্য +1। আমি চেয়েছিলাম যে আমার সিরিয়ালযুক্ত এক্সএমএলটি সুন্দর প্রিন্ট স্টাফের সাথে জায়গা নষ্ট না করে এবং ইনডেন্ট = মিথ্যা এবং নিউলাইনঅন্যাট্রিবিউটস = মিথ্যাটি কাজটি করে।
লি রিচার্ডসন

ধন্যবাদ @ লিরিচার্ডসন - আমার ঠিক বিপরীতটি করা দরকার, এক্সটিএমএল রাইটার এর অধীনে। ইউটিএফ 16 এর কাছে নেট ডিফল্ট যা আমিও লিখছিলাম তা নয়।
oPless

এই স্মৃতিপ্রবাহের সংমিশ্রণটি ব্যবহার করে এবং এটি এনকোডিং গেটস্ট্রিংয়ের মাধ্যমে পাওয়ার ক্ষেত্রে আপনার স্ট্রিংয়ের প্রারম্ভিক / বিওএমকে প্রথম চর হিসাবে অন্তর্ভুক্ত করা হবে। এছাড়াও দেখুন স্ট্যাকওভারফ্লো.com
প্রশ্নগুলি /

@ জামি "এনকোডিং = ইউটিএফ 8 এনকোডিং (মিথ্যা)" এর অর্থ ডকস.মাইক্রোসফটকম / en-us / dotnet / api/ … অনুযায়ী বিওএম লিখবেন না ... .नेट 4 এর পরে এই আচরণ কি পরিবর্তিত হয়েছে?
oPless

4
public static string SerializeObject<T>(T objectToSerialize)
        {
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            MemoryStream memStr = new MemoryStream();

            try
            {
                bf.Serialize(memStr, objectToSerialize);
                memStr.Position = 0;

                return Convert.ToBase64String(memStr.ToArray());
            }
            finally
            {
                memStr.Close();
            }
        }

        public static T DerializeObject<T>(string objectToDerialize)
        {
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            byte[] byteArray = Convert.FromBase64String(objectToDerialize);
            MemoryStream memStr = new MemoryStream(byteArray);

            try
            {
                return (T)bf.Deserialize(memStr);
            }
            finally
            {
                memStr.Close();
            }
        }

1

আমি xhafan দ্বারা প্রস্তাবিত JSONConvers পদ্ধতি ব্যবহার করতে অক্ষম ছিল

"সিস্টেম.ওয়েব.এক্সটেনশানস" সমাবেশ রেফারেন্সটি যোগ করার পরেও .Net 4.5 এ আমি এখনও জেএসএনকনভার্ট অ্যাক্সেস করতে পারিনি।

তবে একবার আপনি রেফারেন্স যুক্ত করলে আপনি একই স্ট্রিংটি ব্যবহার করে মুদ্রণটি পেতে পারেন:

JavaScriptSerializer js = new JavaScriptSerializer();
string jsonstring = js.Serialize(yourClassObject);

2
জেএসনকনভার্ট ক্লাস নিউটনসফট.জসন নেমস্পেসে রয়েছে। আপনার ভিএসে প্যাকেজ ম্যানেজারে যান এবং তারপরে নিউটনসফট.জসন প্যাকেজটি ডাউনলোড করুন
আমির শ্রেষ্ঠ

1

আমি এই হেরফের কোডটি গ্রহণযোগ্য উত্তরে ভাগ করে নেওয়ার মতো আমার মনে হয়েছিল - আমার কোনও খ্যাতি নেই বলে আমি মন্তব্য করতে পারছি না ..

using System;
using System.Xml.Serialization;
using System.IO;

namespace ObjectSerialization
{
    public static class ObjectSerialization
    {
        // THIS: (C): /programming/2434534/serialize-an-object-to-string
        /// <summary>
        /// A helper to serialize an object to a string containing XML data of the object.
        /// </summary>
        /// <typeparam name="T">An object to serialize to a XML data string.</typeparam>
        /// <param name="toSerialize">A helper method for any type of object to be serialized to a XML data string.</param>
        /// <returns>A string containing XML data of the object.</returns>
        public static string SerializeObject<T>(this T toSerialize)
        {
            // create an instance of a XmlSerializer class with the typeof(T)..
            XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType());

            // using is necessary with classes which implement the IDisposable interface..
            using (StringWriter stringWriter = new StringWriter())
            {
                // serialize a class to a StringWriter class instance..
                xmlSerializer.Serialize(stringWriter, toSerialize); // a base class of the StringWriter instance is TextWriter..
                return stringWriter.ToString(); // return the value..
            }
        }

        // THIS: (C): VPKSoft, 2018, https://www.vpksoft.net
        /// <summary>
        /// Deserializes an object which is saved to an XML data string. If the object has no instance a new object will be constructed if possible.
        /// <note type="note">An exception will occur if a null reference is called an no valid constructor of the class is available.</note>
        /// </summary>
        /// <typeparam name="T">An object to deserialize from a XML data string.</typeparam>
        /// <param name="toDeserialize">An object of which XML data to deserialize. If the object is null a a default constructor is called.</param>
        /// <param name="xmlData">A string containing a serialized XML data do deserialize.</param>
        /// <returns>An object which is deserialized from the XML data string.</returns>
        public static T DeserializeObject<T>(this T toDeserialize, string xmlData)
        {
            // if a null instance of an object called this try to create a "default" instance for it with typeof(T),
            // this will throw an exception no useful constructor is found..
            object voidInstance = toDeserialize == null ? Activator.CreateInstance(typeof(T)) : toDeserialize;

            // create an instance of a XmlSerializer class with the typeof(T)..
            XmlSerializer xmlSerializer = new XmlSerializer(voidInstance.GetType());

            // construct a StringReader class instance of the given xmlData parameter to be deserialized by the XmlSerializer class instance..
            using (StringReader stringReader = new StringReader(xmlData))
            {
                // return the "new" object deserialized via the XmlSerializer class instance..
                return (T)xmlSerializer.Deserialize(stringReader);
            }
        }

        // THIS: (C): VPKSoft, 2018, https://www.vpksoft.net
        /// <summary>
        /// Deserializes an object which is saved to an XML data string.
        /// </summary>
        /// <param name="toDeserialize">A type of an object of which XML data to deserialize.</param>
        /// <param name="xmlData">A string containing a serialized XML data do deserialize.</param>
        /// <returns>An object which is deserialized from the XML data string.</returns>
        public static object DeserializeObject(Type toDeserialize, string xmlData)
        {
            // create an instance of a XmlSerializer class with the given type toDeserialize..
            XmlSerializer xmlSerializer = new XmlSerializer(toDeserialize);

            // construct a StringReader class instance of the given xmlData parameter to be deserialized by the XmlSerializer class instance..
            using (StringReader stringReader = new StringReader(xmlData))
            {
                // return the "new" object deserialized via the XmlSerializer class instance..
                return xmlSerializer.Deserialize(stringReader);
            }
        }
    }
}


আমি জানি এটি পুরানো, তবে যেহেতু আপনি সত্যিই ভাল উত্তর দিয়েছেন, আমি একটি ছোট মন্তব্য যুক্ত করব, যেন আমি কোনও PR তে কোড পর্যালোচনা করেছি: জেনেরিকগুলি ব্যবহার করার সময় আপনার টিতে বাধা থাকা উচিত। এটি জিনিসগুলি ঝরঝরে রাখতে সহায়তা করে, এবং কোড-বেস এবং ফ্রেমওয়ার্কগুলিতে প্রতিটি বস্তু সিরিয়ালায়নের জন্য ধার দেয় না
ফ্রাঙ্ক আর। হগেন ২

-1

কিছু বিরল ক্ষেত্রে আপনি নিজের স্ট্রিং সিরিয়ালাইজেশন প্রয়োগ করতে চাইতে পারেন।

আপনি সম্ভবত কী করছেন তা যদি না জানেন তবে এটি সম্ভবত একটি খারাপ ধারণা। (উদাহরণস্বরূপ ব্যাচ ফাইলের সাহায্যে I / O এর জন্য সিরিয়ালাইজ করা)

এর মতো কিছু কৌশলটি করতে পারে (এবং এটি হাত / ব্যাচ দিয়ে সম্পাদনা করা সহজ হবে) তবে সাবধান হন যে আরও কিছু চেক করা উচিত, যেমন নামটিতে একটি নতুন লাইন থাকে না।

public string name {get;set;}
public int age {get;set;}

Person(string serializedPerson) 
{
    string[] tmpArray = serializedPerson.Split('\n');
    if(tmpArray.Length>2 && tmpArray[0].Equals("#")){
        this.name=tmpArray[1];
        this.age=int.TryParse(tmpArray[2]);
    }else{
        throw new ArgumentException("Not a valid serialization of a person");
    }
}

public string SerializeToString()
{
    return "#\n" +
           name + "\n" + 
           age;
}

-1

[ভিবি]

Public Function XmlSerializeObject(ByVal obj As Object) As String

    Dim xmlStr As String = String.Empty

    Dim settings As New XmlWriterSettings()
    settings.Indent = False
    settings.OmitXmlDeclaration = True
    settings.NewLineChars = String.Empty
    settings.NewLineHandling = NewLineHandling.None

    Using stringWriter As New StringWriter()
        Using xmlWriter__1 As XmlWriter = XmlWriter.Create(stringWriter, settings)

            Dim serializer As New XmlSerializer(obj.[GetType]())
            serializer.Serialize(xmlWriter__1, obj)

            xmlStr = stringWriter.ToString()
            xmlWriter__1.Close()
        End Using

        stringWriter.Close()
    End Using

    Return xmlStr.ToString
End Function

Public Function XmlDeserializeObject(ByVal data As [String], ByVal objType As Type) As Object

    Dim xmlSer As New System.Xml.Serialization.XmlSerializer(objType)
    Dim reader As TextReader = New StringReader(data)

    Dim obj As New Object
    obj = DirectCast(xmlSer.Deserialize(reader), Object)
    Return obj
End Function

[সি #]

public string XmlSerializeObject(object obj)
{
    string xmlStr = String.Empty;
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = false;
    settings.OmitXmlDeclaration = true;
    settings.NewLineChars = String.Empty;
    settings.NewLineHandling = NewLineHandling.None;

    using (StringWriter stringWriter = new StringWriter())
    {
        using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, settings))
        {
            XmlSerializer serializer = new XmlSerializer( obj.GetType());
            serializer.Serialize(xmlWriter, obj);
            xmlStr = stringWriter.ToString();
            xmlWriter.Close();
        }
    }
    return xmlStr.ToString(); 
}

public object XmlDeserializeObject(string data, Type objType)
{
    XmlSerializer xmlSer = new XmlSerializer(objType);
    StringReader reader = new StringReader(data);

    object obj = new object();
    obj = (object)(xmlSer.Deserialize(reader));
    return obj;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.