将XML字符串转换为对象

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

消息的形式为:

<msg>

<id>1</id>

<action>stop</action>

</msg>

我是.Net的新手,不确定执行此操作的最佳实践。我以前使用过Java的JAXB,但不确定是否存在类似的东西,或者是否会以其他方式处理。

回答:

您需要使用xsd.exeWindows 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);

以上是 将XML字符串转换为对象 的全部内容, 来源链接: utcz.com/qa/433185.html

回到顶部