从Web服务返回的XML中获取特定值

时间:2015-04-09 19:41:24

标签: c# xml web-services return

猜测这是基本的东西,但我无法弄清楚。我正在使用一个Web服务,它返回下面的XML show,但到目前为止我只处理了只返回一个字符串/ int等的web方法。我不知道如何处理这个返回。它是cdyne天气网络服务,并没有像我这样的菜鸟的深度例子。

 <?xml version="1.0" encoding="UTF-8"?>
-<ForecastReturn xmlns="http://ws.cdyne.com/WeatherWS/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Success>true</Success>
    <ResponseText>City Found</ResponseText>
    <State>NY</State>
    <City>New York</City>
    <WeatherStationCity>White Plains</WeatherStationCity>
    -<ForecastResult>
        -<Forecast>
            <Date>2014-09-20T00:00:00</Date>
            <WeatherID>2</WeatherID>
            <Desciption>Partly Cloudy</Desciption>
            -<Temperatures>
                <MorningLow>52</MorningLow>
            <DaytimeHigh>73</DaytimeHigh>
            </Temperatures>
            -<ProbabilityOfPrecipiation>
                <Nighttime>00</Nighttime>
                <Daytime>10</Daytime>
            </ProbabilityOfPrecipiation>
        </Forecast>
        -<Forecast>
            <Date>2014-09-21T00:00:00</Date>
            <WeatherID>3</WeatherID>
            <Desciption>Mostly Cloudy</Desciption>
            -<Temperatures>
                <MorningLow>63</MorningLow>
                <DaytimeHigh>78</DaytimeHigh>
            </Temperatures>
            -<ProbabilityOfPrecipiation>
                <Nighttime>10</Nighttime>
                <Daytime>20</Daytime>
            </ProbabilityOfPrecipiation>
        </Forecast>
    </ForecastResult>
</ForecastReturn>

现在我只需要第一次预测的描述就可以贴在标签上。

    weatherWebService.Weather weatherService = new weatherWebService.Weather();

    private void btnGo_Click(object sender, EventArgs e)
    {
        weatherService.GetCityForecastByZIP(txtZip.Text);

        lblDescription.Text = magicVariableX;
    }

该服务已添加正常并且可以调用,我只是没有回复的线索,因为即使它在浏览器中测试时发送回的单个变量string.int也显示为XML,但是在代码中没有这样对待。

1 个答案:

答案 0 :(得分:2)

在您尝试解析XML的路径之前...... 您正在查找返回的第一个预测的说明,对吗?

方法.GetCityForecastByZIP返回一种&#34; ForecastReturn&#34;而不是&#34; int&#34;或&#34;字符串&#34;类型。这是一种相当常见的情况。

刚才我成功了:

        ForecastReturn fr = new ForecastReturn();
        Weather service = new Weather();
        fr = service.GetCityForecastByZIP("44060");
        string YourMagicVariable = fr.ForecastResult[0].Desciption;

注意:说明拼写错误。这是CDYNE方面他们如何定义ForecastReturn类型的错字。

此外,因为这是一个.asmx服务。确保您在&#34;高级&#34;

中将该服务引用为旧的.net 2.0服务