我正在为使用HTTP传输XML消息的协议编写客户端。它是同步的,因为我形成一个遵循DTD的XML文档,并通过POST与WebClient类将其发送到协议网关,并从远程服务器获取XML响应消息以指示事务状态/消息ID /等。将XML消息反序列化到对象
由于我有DTD,是否可以使用它创建类?对于我的XML消息正在执行的每种类型的“操作”都有一些可能的响应,并且具有可以被返回的服务器XML保湿的类将是有利的。
一旦我有了这些类,将XML消息从服务器反序列化为对象的基本步骤是什么?
我正在为使用HTTP传输XML消息的协议编写客户端。它是同步的,因为我形成一个遵循DTD的XML文档,并通过POST与WebClient类将其发送到协议网关,并从远程服务器获取XML响应消息以指示事务状态/消息ID /等。将XML消息反序列化到对象
由于我有DTD,是否可以使用它创建类?对于我的XML消息正在执行的每种类型的“操作”都有一些可能的响应,并且具有可以被返回的服务器XML保湿的类将是有利的。
一旦我有了这些类,将XML消息从服务器反序列化为对象的基本步骤是什么?
隐蔽到XSD(不知道是否仍然需要这一步)的DTD:
Free DTD to XSD conversion utility?
生成的XSD(命令行工具的C#类,这是我要做的事,不知道还有一个更好的方法):
http://quickstart.developerfusion.co.uk/quickstart/howto/doc/xmlserialization/XSDToCls.aspx
序列化回类从XML:
一旦你有了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;
}
这绝对让我开始了我的设定。我使用trang将DTD转换为XSD,并从新的XSD文件生成类。应该很容易完成从这里序列化和反序列化的代码。谢谢! – jlafay