We help IT Professionals succeed at work.

display result from xml file

shwaqar82
shwaqar82 asked
on
Medium Priority
191 Views
Last Modified: 2012-05-05
Hi Experts
I have the following xml:
<?xml version="1.0"?>
<!--This Is A List Of Dream Vacations Special Packages-->
<HOTELS>
  <HOTEL>
    <DEPARTURE>Toronto</DEPARTURE>
    <DESTINATION>Cancun</DESTINATION>
    <NAME>AKUMAL BEACH RESORT</NAME>
    <LINK>http://webstar.softvoyage.com/cgi-bin/hotel_desc.cgi?sun&&http://webstar.softvoyage.com/hotels/VACen/AKUMCUN.html</LINK>
    <STAR>3</STAR>
    <ROOM>STD-GARD</ROOM>
    <MEAL>AI</MEAL>
    <DATE>NOV-15-2006</DATE>
    <DURATION>7</DURATION>
    <PRICE>$822.00</PRICE>
    <SID>112086a3259303c76d123e67e7004be2</SID>
    <URL>http://sun.sax.softvoyage.com/cgi-bin/resultsforf.cgi?sid=112086a3259303c76d123e67e7004be2</URL>
  </HOTEL>
  <HOTEL>
    <DEPARTURE>Toronto</DEPARTURE>
    <DESTINATION>Cancun</DESTINATION>
    <NAME>AKUMAL BEACH RESORT</NAME>
    <LINK>http://webstar.softvoyage.com/cgi-bin/hotel_desc.cgi?sun&&http://webstar.softvoyage.com/hotels/VACen/AKUMCUN.html</LINK>
    <STAR>3</STAR>
    <ROOM>SUP</ROOM>
    <MEAL>AI</MEAL>
    <DATE>NOV-15-2006</DATE>
    <DURATION>7</DURATION>
    <PRICE>$863.00</PRICE>
    <SID>112086a3259303c76d123e67e7004be2</SID>
    <URL>http://sun.sax.softvoyage.com/cgi-bin/resultsforf.cgi?sid=112086a3259303c76d123e67e7004be2</URL>
  </HOTEL>
</HOTELS>

And im using the following code which  should display the result of each node on the page but it gives me the result of first node every time. Im using the following code:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim doc As New XmlDocument
        Dim hotelNodes As XmlNodeList
        Dim node As XmlNode
        Dim strDep, strDes, strName, strLink, strStar, strRoom, strMeal, strDate, strDuration, strPrice, strSID, strURL As String
        Dim lbl As Label
       
       
        Dim hl As HyperLink
        Dim tbl As New Table
        Dim tr As TableRow
        Dim tc As TableCell
        Dim i As Integer
        doc.Load("C:\Inetpub\wwwroot\CallForm\Specials\special.xml")

        hotelNodes = doc.SelectNodes("//HOTELS/HOTEL")

        i = 1

        For Each node In hotelNodes
            strDep = node.SelectSingleNode("//DEPARTURE").InnerText
            strDes = node.SelectSingleNode("//DESTINATION").InnerText
            strName = node.SelectSingleNode("//NAME").InnerText
            strLink = node.SelectSingleNode("//LINK").InnerText
            strStar = node.SelectSingleNode("//STAR").InnerText
            strRoom = node.SelectSingleNode("//ROOM").InnerText
            strMeal = node.SelectSingleNode("//MEAL").InnerText
            strDate = node.SelectSingleNode("//DATE").InnerText
            strDuration = node.SelectSingleNode("//DURATION").InnerText
            strPrice = node.SelectSingleNode("//PRICE").InnerText
            strSID = node.SelectSingleNode("//SID").InnerText
            strURL = node.SelectSingleNode("//URL").InnerText

           
            tr = New TableRow
            tc = New TableCell
           
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "<br>Departure: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strDep & "</b></br>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Destination: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strDes & "</b></br>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Hotel: "
            tc.Controls.Add(lbl)
            hl = New HyperLink
            hl.ID = "h1" & i
            hl.Text = strName
            hl.NavigateUrl = strLink
            tc.Controls.Add(hl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            tr = New TableRow
            tc = New TableCell
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Star Rating: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strStar & "</b>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            tr = New TableRow
            tc = New TableCell
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Room Type: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strRoom & "</b>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            tr = New TableRow
            tc = New TableCell
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Meal: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strMeal & "</b>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            tr = New TableRow
            tc = New TableCell
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Date: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strDate & "</b>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            tr = New TableRow
            tc = New TableCell
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Duration: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strDuration & "</b>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
           
            tr = New TableRow
            tc = New TableCell
            lbl = New Label
            lbl.ID = "lbl" & i
            lbl.Text = "Price: "
            tc.Controls.Add(lbl)
            lbl = New Label
            lbl.ID = "lbl2" & i
            lbl.Text = "<b>" & strPrice & "</b>"
            tc.Controls.Add(lbl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
                       
            tr = New TableRow
            tc = New TableCell
            hl = New HyperLink
            hl.ID = "h2" & i
            hl.NavigateUrl = strURL
            'hl.NavigateUrl = "http://sun.sax.softvoyage.com/cgi-bin/input-verifforf.cgi?sid=" & strSID
            hl.Text = "<b>" & "Request Space" & "</b></br>"
            tc.Controls.Add(hl)
            tr.Cells.Add(tc)
            tbl.Rows.Add(tr)
     
       i += 1
        Next
        Page.Controls.Add(tbl)
     End Sub

This code traverse through each node but displaying the values of first node every time. Can anyone help me..?

Best Regards
Shaukat
Comment
Watch Question

Gertone (Geert Bormans)Information Architect
CERTIFIED EXPERT
Top Expert 2006

Commented:
Hi shwaqar82,

get rid of the "//" in the childnodes
strDep = node.SelectSingleNode("DEPARTURE").InnerText


Cheers!
Information Architect
CERTIFIED EXPERT
Top Expert 2006
Commented:
shwaqar82,

the "//" makes you start at the root node all over again for every HOTEL
pointing at the first each time

since DEPARTURE is a direct child, you should just put the name there, not the // in front of it

cheers

Geert

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts

Author

Commented:
i did that but still gives me the same result

Author

Commented:
Hi Geert

It works now thanks for you precious help on time.

Best Regards
Shaukat

Author

Commented:
Can you help me in displaying the nodes information row wise. I mean i wana display the information like below:

Hotel 1 Information                       Hotel 2 Information
Hotel 3 Information                       Hotel 4 Information
Hotel 5 Information

Right now it displays the information like that:

Hotel 1 Info.
Hotel 2 Info.
Hotel 3 Info.
....

That would be great if you fixed it.

Best Regards
Shaukat Waqar
Gertone (Geert Bormans)Information Architect
CERTIFIED EXPERT
Top Expert 2006

Commented:
Hi,

I am not really a VB (script) programmer

What you could do is the following

For Each node In hotelNodes
you could only loop over the hotelNodes with a position mod 2 = 1
and so create the rows
and pick the following node inside the row

If you can't manage that yourself, you can post in the VB(script) TA

cheers
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.