Search code examples
xmlvb.netparsingxml-parsingxmlreader

XmlReader loop through node


Hey all i have the following code:

    Using reader As XmlReader = XmlReader.Create(New StringReader(xmlString))
        reader.ReadToFollowing("GridChannel")
        Dim Channel As String = reader.GetAttribute("Channel")
        Dim DisplayName As String = reader.GetAttribute("DisplayName")

        reader.ReadToFollowing("Airings")
        reader.ReadToFollowing("GridAiring")

        Dim Title As String = reader.GetAttribute("Title")
        Dim EpisodeTitle As String = reader.GetAttribute("EpisodeTitle")
        Dim AiringTDurationime As String = reader.GetAttribute("AiringTDurationime")
        Dim isHD As Boolean = Convert.ToBoolean(reader.GetAttribute("isHD"))
        Dim TVRating As String = reader.GetAttribute("TVRating")
    End Using

That code works just fine above but i am having problems with looping through the Airings part.

The XML for that part looks like this:

    <Airings>
        <GridAiring ProgramId="35951" SeriesId="3490" Title="Matlock" EpisodeTitle="Santa Claus" AiringTime="2013-04-12T14:00:00Z" Duration="60" Color="Color" AiringType="Unknown" CC="true" LetterBox="false" Stereo="false" HD="false" SAP="false" TVRating="TV-PG" Dolby="false" DSS="false" HDLevel="HD Level Unknown" DVS="false" Category="Other" Subcategory="drama" Sports="false"/>
        <GridAiring ProgramId="828869" SeriesId="1409" Title="In the Heat of the Night" EpisodeTitle="Hatton's Turn" AiringTime="2013-04-12T15:00:00Z" Duration="60" Color="Color" AiringType="Unknown" CC="true" LetterBox="false" Stereo="false" HD="false" SAP="false" TVRating="TV-PG@V" Dolby="false" DSS="false" HDLevel="HD Level Unknown" DVS="false" Category="Other" Subcategory="crime drama" Sports="false"/>
        <GridAiring ProgramId="978338" SeriesId="1409" Title="In the Heat of the Night" EpisodeTitle="Hatton's Turn" AiringTime="2013-04-12T16:00:00Z" Duration="60" Color="Color" AiringType="Unknown" CC="true" LetterBox="false" Stereo="false" HD="false" SAP="false" TVRating="TV-PG@V" Dolby="false" DSS="false" HDLevel="HD Level Unknown" DVS="false" Category="Other" Subcategory="crime drama" Sports="false"/>
        <GridAiring ProgramId="4210626" Title="WGN Midday News" AiringTime="2013-04-12T17:00:00Z" Duration="60" Color="Color" AiringType="New" CC="true" LetterBox="false" Stereo="true" HD="false" SAP="false" TVRating="None" Dolby="false" DSS="false" HDLevel="HD Level Unknown" DVS="false" Category="News" Subcategory="newscast" Sports="false"/>
        <GridAiring ProgramId="878716" SeriesId="1028666" Title="Walker, Texas Ranger" EpisodeTitle="El Coyote, Part 2" AiringTime="2013-04-12T18:00:00Z" Duration="60" Color="Color" AiringType="Unknown" CC="true" LetterBox="false" Stereo="true" HD="false" SAP="false" TVRating="TV-14@V" Dolby="false" DSS="false" HDLevel="HD Level Unknown" DVS="false" Category="Other" Subcategory="crime drama" Sports="false"/>
    </Airings>

Solution

  • Ok to loop you do this:

    While reader.ReadToFollowing("GridAiring")
        Dim Title As String = reader.GetAttribute("Title")
        Dim EpisodeTitle As String = reader.GetAttribute("EpisodeTitle")
        Dim AiringTDurationime As String = reader.GetAttribute("AiringTDurationime")
        Dim isHD As Boolean = Convert.ToBoolean(reader.GetAttribute("isHD"))
        Dim TVRating As String = reader.GetAttribute("TVRating")
    End While