將XML String轉(zhuǎn)換為Object我通過套接字接收XML字符串,并希望將它們轉(zhuǎn)換為C#對象。消息的形式如下:<msg>
<id>1</id>
<action>stop</action></msg>我是.Net的新手,并不確定執(zhí)行此操作的最佳做法。我之前使用過JAXB for Java,并且不確定是否有類似的東西,或者是否會以不同的方式處理。
3 回答

FFIVE
TA貢獻1797條經(jīng)驗 獲得超6個贊
您需要使用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轉(zhuǎn)換為XSD文件(XML架構(gòu)文件):
xsd yourfile.xml
這樣yourfile.xsd
,您可以在第二步中再次使用xsd.exe
C#類進行轉(zhuǎn)換:
xsd yourfile.xsd /c
這應該為您提供一個文件yourfile.cs
,其中包含一個C#類,您可以使用它來反序列化您正在獲取的XML文件 - 例如:
XmlSerializer serializer = new XmlSerializer(typeof(msg));msg resultingMessage = (msg)serializer.Deserialize(new XmlTextReader("yourfile.xml"));
對大多數(shù)情況應該很好。
更新: XML序列化程序?qū)⑷魏瘟髯鳛槠漭斎?- 文件或內(nèi)存流都可以:
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);

臨摹微笑
TA貢獻1982條經(jīng)驗 獲得超2個贊
嘗試使用此方法將Xml轉(zhuǎn)換為對象。這是為了你正在做的事情:
protected T FromXml<T>(String xml){ T returnedXmlClass = default(T); try { using (TextReader reader = new StringReader(xml)) { try { returnedXmlClass = (T)new XmlSerializer(typeof(T)).Deserialize(reader); } catch (InvalidOperationException) { // String passed is not XML, simply return defaultXmlClass } } } catch (Exception ex) { } return returnedXmlClass ; }
使用以下代碼調(diào)用它:
YourStrongTypedEntity entity = FromXml<YourStrongTypedEntity>(YourMsgString);
添加回答
舉報
0/150
提交
取消