Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从web调用获取所有文本_C#_Xml_Httpwebrequest_Xmlserializer - Fatal编程技术网

C# 从web调用获取所有文本

C# 从web调用获取所有文本,c#,xml,httpwebrequest,xmlserializer,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 = nul

我有下面的代码,它做了我想要它做的事情。它从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()
几乎可以提供所有数据,但不是所有数据。缺少两样东西

  • 声明
  • 响应附带的DTD声明

  • 我也想要这两样东西。我必须排除DTD声明,因为它不是反序列化到对象中所必需的,并且当我没有排除它时,它会导致错误。根据以上代码,获得完整响应的最干净的方法是什么?

    根据我的经验,在获得Web服务的结果后,最好将声明添加到字符串中,或者通过编程进行声明

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

    string xmlStr = string.format(@" < ?xml version=\"1.0\" encoding=\"ISO-8859-1\"? > {0}", WebServiceStringResult)
    
    然后,您可以使用以下命令从连接的字符串创建新的XML文档对象:

    YourXmlDocumentObject.ReadXML(xmlStr) 
    
  • 然后循环或xpath输出所需的值。 或
  • 根据需要强制转换/操作YourXmlDocumentObject
  • 方法2-在接收数据后以编程方式添加XML/DTD声明

    string xmlStr = string.format(@" < ?xml version=\"1.0\" encoding=\"ISO-8859-1\"? > {0}", WebServiceStringResult)
    
    在新的XmlDocument对象中,设置属性以匹配XML版本和DTD信息

    最后,只需使用以下内容添加您的webservice结果字符串:

    YourXmlDocumentObject.ReadXML(WebServiceStringResult);
    
    注意:SOAP1.1和1.2将与声明一起作为嵌入式请求的一部分。 ie声明在您的一个web方法中


    ~^我仍在学习使用这个poxy编辑器,对不起~

    你好,Aaron,我不确定如何将上述内容集成到我的代码中。另外,我只想将响应中的实际内容输入字符串中,而不是假设它将包含特定的编码(例如)。我很想在这里看到更多细节。我想问题是,一旦你创建了这个“提要”对象,你想对它做什么?我想能够使用它从中获取数据。看看M$take吧。。。因为您正在创建一个XmlDocument对象,所以可以确信它的类型是XML。M$示例将允许您根据DTD对其进行验证。