c# – 将XML字符串转换为对象

我通过套接字接收XML字符串,并希望将它们转换为C#对象。

消息的格式如下:

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

我是新的.Net,我不确定执行这个的最佳实践。我以前使用JAXB for Java,不知道是否有类似的东西,或者如果这将被处理一个不同的方式。

您需要使用xsd.exe工具,它与Windows SDK安装在一个目录类似于:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin

而在64位计算机上:

C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin

在Windows 10计算机上:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin

在第一次运行时,您使用xsd.exe,并将示例XML转换为XSD文件(XML模式文件):

xsd yourfile.xml

这给你yourfile.xsd,在第二步,你可以使用xsd.exe转换成一个C#类:

xsd yourfile.xsd /c

这应该给你一个文件yourfile.cs将包含一个C#类,你可以用来反序列化你的XML文件 – 类似:

XmlSerializer serializer = new XmlSerializer(typeof(msg));
msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));

在大多数情况下应该工作得很好。

更新:XML序列化器将任何流作为其输入 – 文件或内存流将是很好:

XmlSerializer serializer = new XmlSerializer(typeof(msg));
MemoryStream memStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage = (msg)serializer.Deserialize(memStream);

或使用StringReader:

XmlSerializer serializer = new XmlSerializer(typeof(msg));
StringReader rdr = new StringReader(inputString);
msg resultingMessage = (msg)serializer.Deserialize(rdr);
http://stackoverflow.com/questions/3187444/convert-xml-string-to-object

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 将XML字符串转换为对象