我通过套接字接收XML字符串,并希望将其转换为C#对象
这些信息的形式如下:
<;味精>;
<;id>;1</id>;
<;行动>;停止</行动>;
</味精>;
我是.Net新手,不确定执行此操作的最佳实践。我以前使用过JAXB for Java,不确定是否有类似的东西,或者是否会以不同的方式处理
您需要使用xsd.exe工具,该工具与Windows SDK一起安装到类似于以下内容的目录中:
C:\Program Files\Microsoft SDK\Windows\v6.0A\bin
在64位计算机上:
C:\ProgramFiles(x86)\Microsoft SDK\Windows\v6.0A\bin
在Windows 10计算机上:
C:\ProgramFiles(x86)\Microsoft SDK\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=新的XmlSerializer(typeof(msg));
msg resultingMessage=(msg)serializer.Deserialize(新的XmlTextReader(“yourfile.xml”);
在大多数情况下都能很好地工作
更新:XML序列化程序将采用任何流作为其输入-文件或内存流都可以:
XmlSerializer serializer=新的XmlSerializer(typeof(msg));
MemoryStream memStream=新的MemoryStream(Encoding.UTF8.GetBytes(inputString));
msg resultingMessage=(msg)序列化程序。反序列化(memStream);
或者使用StringReader:
XmlSerializer serializer=新的XmlSerializer(typeof(msg));
StringReader rdr=新StringReader(inputString);
msg resultingMessage=(msg)序列化程序。反序列化(rdr);