如何解析此XML并正确映射?

时间:2011-12-22 16:03:04

标签: c# xml parsing windows-phone-7

这是我要解析的xml:

<xml_api_reply version="1">
    <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
    <forecast_information>
    <city data="London UK"/>
    <postal_code data="London UK"/>
    <latitude_e6 data=""/>
    <longitude_e6 data=""/>
    <forecast_date data="2011-12-22"/>
    <current_date_time data="2011-12-22 14:50:00 +0000"/>
    <unit_system data="US"/>
    </forecast_information>
    <current_conditions>
    <condition data="Partly Cloudy"/>
    <temp_f data="54"/>
    <temp_c data="12"/>
    <humidity data="Humidity: 77%"/>
    <icon data="/ig/images/weather/partly_cloudy.gif"/>
    <wind_condition data="Wind: W at 10 mph"/>
    </current_conditions>
    <forecast_conditions>
    <day_of_week data="Thu"/>
    <low data="50"/>
    <high data="55"/>
    <icon data="/ig/images/weather/fog.gif"/>
    <condition data="Fog"/>
    </forecast_conditions>
    <forecast_conditions>
    <day_of_week data="Fri"/>
    <low data="37"/>
    <high data="55"/>
    <icon data="/ig/images/weather/chance_of_rain.gif"/>
    <condition data="Chance of Rain"/>
    </forecast_conditions>
    <forecast_conditions>
    <day_of_week data="Sat"/>
    <low data="45"/>
    <high data="48"/>
    <icon data="/ig/images/weather/mostly_sunny.gif"/>
    <condition data="Mostly Sunny"/>
    </forecast_conditions>
    <forecast_conditions>
    <day_of_week data="Sun"/>
    <low data="48"/>
    <high data="54"/>
    <icon data="/ig/images/weather/fog.gif"/>
    <condition data="Fog"/>
    </forecast_conditions>
    </weather>
    </xml_api_reply>

如何正确解析和映射此输出?我有点挣扎。我试过用的是......

Dictionary<string, Dictionary<string, List<String>>> details =  
        new Dictionary<string, Dictionary<string, List<string>>>();

...映射每个属性数据。

2 个答案:

答案 0 :(得分:1)

您可以使用datacontractserializer直接反序列化和正确匹配xml结构的类,也可以使用XDocument使用linq2xml并循环遍历XElement中的每个XDocument并走过它。

答案 1 :(得分:0)

您需要像提供的xml一样创建类层次结构。例如,类Weather包含另一个类ForecastInformation,其中包含字符串字段citypostal_code等。另外,ForecastConditions元素列表中包含Weather个元素1}}所有温度测量的等级