我通过套接字接收XML字符串,并希望将这些转换为c#对象。

这些消息的形式是:

<msg>
   <id>1</id>
   <action>stop</action>
</msg>

如何做到这一点呢?


当前回答

简单地运行你的Visual Studio 2013管理… 复制Xml文件的内容。 进入Visual Studio 2013 >编辑>粘贴特殊>将Xml粘贴为c#类 它将根据Xml文件内容创建c#类。

其他回答

public string Serialize<T>(T settings)
{
    XmlSerializer serializer = new XmlSerializer(typeof(T));
    StringWriter outStream = new StringWriter();
    serializer.Serialize(outStream, settings);
    return outStream.ToString();
}

以防有人觉得这个有用:

public static class XmlConvert
{
    public static string SerializeObject<T>(T dataObject)
    {
        if (dataObject == null)
        {
            return string.Empty;
        }
        try
        {
            using (StringWriter stringWriter = new System.IO.StringWriter())
            {
                var serializer = new XmlSerializer(typeof(T));
                serializer.Serialize(stringWriter, dataObject);
                return stringWriter.ToString();
            }
        }
        catch (Exception ex)
        {
            return string.Empty;
        }
    }

    public static T DeserializeObject<T>(string xml)
         where T : new()
    {
        if (string.IsNullOrEmpty(xml))
        {
            return new T();
        }
        try
        {
            using (var stringReader = new StringReader(xml))
            {
                var serializer = new XmlSerializer(typeof(T));
                return (T)serializer.Deserialize(stringReader);
            }
        }
        catch (Exception ex)
        {
            return new T();
        }
    }
}

你可以使用:

MyCustomObject myObject = new MyCustomObject();
string xmlString = XmlConvert.SerializeObject(myObject);
myObject = XmlConvert.DeserializeObject<MyCustomObject>(xmlString);

您可以使用xsd.exe在.Net中创建模式绑定类,然后使用XmlSerializer反序列化字符串:http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.deserialize.aspx

如果您有xml消息的xsd,那么您可以使用. net xsd.exe工具生成c#类。

然后可以使用这个. net类来生成xml。

除了这里的其他答案之外,您还可以自然地使用XmlDocument类(用于类似XML dom的读取)或XmlReader(仅向前的快速读取器)来“手动”执行此操作。