If you like problems to resolve, here a big one :D
First, It isn't about serialization, ok?
Well, my situation... I am writting a function that I will pass as parameter a Xml (XmlDocument) and an object (Object) as reference. It will return to me a object (object that was referenced) filled with the values from the Xml (XmlDocument).
For example:
I have a Xml like:
<user>
<id>1</id>
<name>Daniel</name>
</user>
Also I have my function
public Object transformXmlToObject (XmlDocument xml, Object ref)
{
// Scroll each parameters in Xml and fill the object(ref) using reflection.
return ref;
}
How will I use it?
I will use like this:
[WebMethod]
public XmlDocument RecebeLoteRPS(XmlDocument xml)
{
// class user receive the object converted from the function
User user = new User();
user = transformXmlToObject(xml, user);
// object filled
}
I need help guys, please.
Best regards, Dan
This should do what you want.
using System.Xml;
using System.Reflection;
using System.ComponentModel.DataAnnotations;
using System.Collections;
namespace MyProject.Helpers
{
public class XMLHelper
{
public static void HydrateXMLtoObject(object myObject, XmlNode node)
{
if (node == null)
{
return;
}
PropertyInfo propertyInfo;
IEnumerator list = node.GetEnumerator();
XmlNode tempNode;
while (list.MoveNext())
{
tempNode = (XmlNode)list.Current;
propertyInfo = myObject.GetType().GetProperty(tempNode.Name);
if (propertyInfo != null) {
setProperty(myObject,propertyInfo, tempNode.InnerText);
}
}
}
}
}
Erm, yes, this is exactly about serialization. In fact, this is exactly what XML serialization was written for.
Anyway, if you want to write your own, perhaps you can set properties based on the tags in your XML blob? i.e. if you User object has an Id and a Name property, perhaps you should set them in accordance with the XML blob?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With