代码之家  ›  专栏  ›  技术社区  ›  Sachin Kainth

从网络通话中获取所有文本

  •  0
  • Sachin Kainth  · 技术社区  · 12 年前

    我有以下代码,它做我想做的事情。它从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声明。

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

    1 回复  |  直到 12 年前
        1
  •  1
  •   FlemGrem    12 年前

    根据我的经验,它可以在获得Web服务的结果后将声明添加到字符串中,也可以用程序进行声明。

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

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

    然后,您可以从连接的字符串中创建一个新的XML文档对象,其中包含:

    YourXmlDocumentObject.ReadXML(xmlStr) 
    
    1. 然后循环或展开所需的值。 或
    2. 根据需要转换/操作YourXmlDocumentObject。

    方法2-在接收数据后以编程方式添加XML/DTD声明

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

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

    YourXmlDocumentObject.ReadXML(WebServiceStringResult);
    

    注意:Soap 1.1和1.2将作为嵌入请求的一部分进行声明。 即声明在您的一个web方法中。

    ~^我还在学习使用这个 环氧树脂 编辑,对不起~