我正在编写一个使用HTTP传输XML消息的协议的客户端。它是同步的,因为我形成一个遵循DTD的XML文档,并通过POST与WebClient类将其发送到协议的网关,我从远程服务器获得XML响应消息,以指示事务状态/消息ID /等。 / p>
由于我有DTD,是否可以用它创建类?对于我的XML消息正在执行的每种类型的“操作”,有一些可能的响应,并且具有可由返回的服务器XML水合的类将是有利的。
一旦有了这些类,将XML消息从服务器反序列化为对象的基本步骤是什么?
答案 0 :(得分:4)
将DTD转换为XSD(不确定是否仍需要此步骤):
Free DTD to XSD conversion utility?
从XSD生成C#类(命令行工具,我就是这样做的,不确定是否有更好的方法):
http://quickstart.developerfusion.co.uk/quickstart/howto/doc/xmlserialization/XSDToCls.aspx
从XML序列化回到类:
答案 1 :(得分:1)
一旦你有了xml字符串,就可以做这样的事情,其中T是你的通用对象。
public static T GetObjectFromXmlString<T>(string xml)
{
T result = default(T);
if (string.IsNullOrEmpty(xml))
return result;
using (StringReader sr = new StringReader(xml))
{
using (XmlTextReader xr = new XmlTextReader(sr))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
result = (T)serializer.Deserialize(xr);
}
}
return result;
}