Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# - Hydrate existing object with XML

Tags:

c#

xml

I know I can use Linq to map fields from XML to fields in a pre-existing object. Are there any functions in the .NET Framework (or other libraries) that make this less manual.

I would like to write (and have the HydrateFromXml behave a little like AutoMapper does):

var myObject = new MyObject(/*ctor args*/);

myObject = myObject.HydrateFromXml(string xml);

Edit:

Could I use the decorator pattern or a simple wrapper object here? Deserialize directly into a type that is wrapped by an abstraction that permits the fine-grained construction control I need?

like image 815
Ben Aston Avatar asked Mar 15 '13 13:03

Ben Aston


People also ask

Huruf c melambangkan apa?

Logo C merupakan sebuah lambang yang merujuk pada Copyright, yang berarti hak cipta.

C dalam Latin berapa?

C adalah huruf ketiga dalam alfabet Latin. Dalam bahasa Indonesia, huruf ini disebut ce (dibaca [tʃe]).

Bahasa C digunakan untuk apa?

Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia.

Bahasa C dibuat pertama kali oleh siapa dan tahun berapa?

Bahasa pemrograman C ini dikembangkan antara tahun 1969 – 1972 oleh Dennis Ritchie. Yang kemudian dipakai untuk menulis ulang sistem operasi UNIX. Selain untuk mengembangkan UNIX, bahasa C juga dirilis sebagai bahasa pemrograman umum.


2 Answers

You can use XmlSerializer to do that:

var serializer = new XmlSerializer(typeof(MyObject));

object result;
using (TextReader reader = new StringReader(xml))
{
    result= serializer.Deserialize(reader);
}

var myObject = result as MyObject;

For a situation when you're object instance already exists check this question: Deserializing properties into a pre-existing object

like image 94
MarcinJuraszek Avatar answered Sep 29 '22 20:09

MarcinJuraszek


As a quick option, you could use AutoMapper. Use the XmlSerializer to deserialize to a new instance and then use AutoMapper to map from the newly created instance to your required instance.

like image 26
cosullivan Avatar answered Sep 29 '22 19:09

cosullivan