从Web呼叫中获取所有文本

时间:2013-09-13 09:35:56

标签: c# xml httpwebrequest xmlserializer

我有以下代码,它可以完成我想要它做的事情。它从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()几乎给了我所有数据但不是一切。缺少两件事

  1. <?xml version="1.0" encoding="ISO-8859-1"?>声明
  2. 响应附带的DTD声明。
  3. 我也喜欢这两样东西。我不得不排除DTD声明,因为它不需要反序列化到一个对象中,当我没有排除它时它会导致错误。鉴于上述代码,获得完整响应的最简洁方法是什么?

1 个答案:

答案 0 :(得分:1)

根据我的经验,您可以在从Web服务获得结果后将声明添加到字符串中,或​​者以编程方式声明它。

方法1 - 收到数据后添加XML声明

string xmlStr = string.format(@" &lt; ?xml version=\"1.0\" encoding=\"ISO-8859-1\"? &gt; {0}", WebServiceStringResult)

然后,您可以使用以下连接字符串创建新的XML Document对象:

YourXmlDocumentObject.ReadXML(xmlStr) 
  1. 然后循环或xpath输出所需的值。 或
  2. 根据需要投射/操作YourXmlDocumentObject。
  3. 方法2 - 在收到数据后以编程方式添加XML / DTD声明

    在新的XmlDocument对象中,设置Properties以匹配您的XML版本和DTD信息。

    最后,只需添加您的webservice结果字符串:

    YourXmlDocumentObject.ReadXML(WebServiceStringResult);
    

    注意:Soap 1.1和1.2将作为嵌入式请求的一部分声明。 即声明在你的一个网络方法中。

    〜^我还在学习使用这个 poxy 编辑器,抱歉〜