我有以下代码,它可以完成我想要它做的事情。它从Web调用中获取XML数据并将其放在对象中。
string url = ConfigurationManager.AppSettings[CONFIGURATION_KEY_XE_COM_URL];
var serialiser = new XmlSerializer(typeof(xedatafeed));
var settings = new XmlReaderSettings {XmlResolver = null, DtdProcessing = DtdProcessing.Parse};
var reader = XmlReader.Create(url, settings);
var feed = (xedatafeed) serialiser.Deserialize(reader);
return feed;
问题是我想获得这些数据的字符串表示,并且feed.ToString()
几乎给了我所有数据但不是一切。缺少两件事
<?xml version="1.0" encoding="ISO-8859-1"?>
声明我也喜欢这两样东西。我不得不排除DTD声明,因为它不需要反序列化到一个对象中,当我没有排除它时它会导致错误。鉴于上述代码,获得完整响应的最简洁方法是什么?
答案 0 :(得分:1)
根据我的经验,您可以在从Web服务获得结果后将声明添加到字符串中,或者以编程方式声明它。
方法1 - 收到数据后添加XML声明
string xmlStr = string.format(@" < ?xml version=\"1.0\" encoding=\"ISO-8859-1\"? > {0}", WebServiceStringResult)
然后,您可以使用以下连接字符串创建新的XML Document对象:
YourXmlDocumentObject.ReadXML(xmlStr)
方法2 - 在收到数据后以编程方式添加XML / DTD声明
在新的XmlDocument对象中,设置Properties以匹配您的XML版本和DTD信息。
最后,只需添加您的webservice结果字符串:
YourXmlDocumentObject.ReadXML(WebServiceStringResult);
注意:Soap 1.1和1.2将作为嵌入式请求的一部分声明。 即声明在你的一个网络方法中。
〜^我还在学习使用这个 poxy 编辑器,抱歉〜