使用反射将XML转换为Object

Dan*_*Dan 3 c# xml reflection

如果你想解决问题,这里有一个很大的问题:D

首先,它不是关于序列化,好吗?

好吧,我的情况......我正在编写一个函数,我将作为参数传递给Xml(XmlDocument)和一个对象(Object)作为参考.它将返回一个填充了Xml(XmlDocument)值的对象(被引用的对象).

例如:

我有一个Xml像:

<user>
  <id>1</id>
  <name>Daniel</name>
</user>
Run Code Online (Sandbox Code Playgroud)

我也有我的功能

public Object transformXmlToObject (XmlDocument xml, Object ref)
{
  // Scroll each parameters in Xml and fill the object(ref) using reflection.
  return ref;
}
Run Code Online (Sandbox Code Playgroud)

我该如何使用它?

我会用这样的:

[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 
}
Run Code Online (Sandbox Code Playgroud)

我需要帮助的人.

最好的问候,丹

and*_*yuk 6

这应该做你想要的.

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);

                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)