Results 1 to 8 of 8

Thread: [RESOLVED][2005] Getting data between <player> tags

  1. #1

    Thread Starter
    Member
    Join Date
    Sep 2007
    Location
    Wales, UK
    Posts
    38

    Resolved [RESOLVED][2005] Getting data between <player> tags

    Hello,

    I was just wondering if you could help me extract & format data between <player> tags (obviously a css-assosiated tag), i'm working on a website for my guild on WAR and the player data is posted on a community site like so:

    Code:
    <player>
    <div>name</div>
    <div>level</div>
    <div>rlevel</div>
    
    <div>guild</div>
    <div>rank</div>
    </player>
    There are also assosiated players that i'd also like to extract, the html is formatted exactly the same, it's just lower down the page.

    I was wondering how i'd go about formatting it like so:

    Player1 name, Level, Plevel, Guild, Rank
    Player2 name, Level, Plevel, Guild, Rank

    Any help is appreciated,

    Thanks
    Last edited by spambot; Dec 3rd, 2008 at 06:27 PM.

  2. #2
    eXtreme Programmer .paul.'s Avatar
    Join Date
    May 2007
    Location
    Chelmsford UK
    Posts
    26,423

    Re: [2005] Getting data between <player> tags

    try this:

    vb Code:
    1. Dim xmlDoc As New Xml.XmlDocument
    2. Dim xmlRoot As Xml.XmlNode
    3. xmlDoc.LoadXml("<player>" & Environment.NewLine & _
    4.     "<div>name</div>" & Environment.NewLine & _
    5.     "<div>level</div>" & Environment.NewLine & _
    6.     "<div>rlevel</div>" & Environment.NewLine & _
    7.     "<div>guild</div>" & Environment.NewLine & _
    8.     "<div>rank</div>" & Environment.NewLine & _
    9.     "</player>")
    10. xmlRoot = xmlDoc.DocumentElement
    11. Dim nodes As XmlNodeList = xmlRoot.SelectNodes("div")
    12. Dim msg As String = String.Empty
    13. For Each node As XmlNode In nodes
    14.     msg &= node.InnerText & ","
    15. Next
    16. msg = msg.Remove(msg.Length - 1, 1)
    17. MsgBox(msg)

  3. #3

    Thread Starter
    Member
    Join Date
    Sep 2007
    Location
    Wales, UK
    Posts
    38

    Re: [2005] Getting data between <player> tags

    Thanks but theres more html around it i was trying to ignore so i'm trying to copy and paste it into a textbox and then process it, i just get a divide by zero error when i try to replace:

    xmlDoc.LoadXml("<player>" & Environment.NewLine & _
    "<div>name</div>" & Environment.NewLine & _
    "<div>level</div>" & Environment.NewLine & _
    "<div>rlevel</div>" & Environment.NewLine & _
    "<div>guild</div>" & Environment.NewLine & _
    "<div>rank</div>" & Environment.NewLine & _
    "</player>")

    with:

    xmlDoc.LoadXml(textbox1.text)
    Last edited by spambot; Nov 22nd, 2008 at 03:00 PM.

  4. #4
    eXtreme Programmer .paul.'s Avatar
    Join Date
    May 2007
    Location
    Chelmsford UK
    Posts
    26,423

    Re: [2005] Getting data between <player> tags

    i tried it with a textbox. worked ok.

    edit: ignore the buttons. i tested it in my xml learning program
    Attached Images Attached Images  
    Last edited by .paul.; Nov 22nd, 2008 at 03:18 PM.

  5. #5

    Thread Starter
    Member
    Join Date
    Sep 2007
    Location
    Wales, UK
    Posts
    38

    Re: [2005] Getting data between <player> tags

    try with:
    Code:
    <html>
    <title>test</title>
    <head>
    </head>
    <player> 
    <div>name</div> 
    <div>level</div> 
    <div>rlevel</div> 
    <div>guild</div> 
    <div>rank</div> 
    </player>
    </html>
    I really appreciate the help. sorry if i didnt get the point accross that it's within html.

  6. #6
    eXtreme Programmer .paul.'s Avatar
    Join Date
    May 2007
    Location
    Chelmsford UK
    Posts
    26,423

    Re: [2005] Getting data between <player> tags

    this works:

    vb Code:
    1. Dim xmlDoc As New Xml.XmlDocument
    2. Dim xmlRoot As Xml.XmlNode
    3. xmlDoc.LoadXml(TextBox1.Text)
    4. xmlRoot = xmlDoc.DocumentElement
    5. Dim nodes As XmlNodeList = xmlRoot.SelectNodes("player/div")
    6. Dim msg As String = String.Empty
    7. For Each node As XmlNode In nodes
    8.     msg &= node.InnerText & ","
    9. Next
    10. msg = msg.Remove(msg.Length - 1, 1)
    11. MsgBox(msg)

  7. #7
    eXtreme Programmer .paul.'s Avatar
    Join Date
    May 2007
    Location
    Chelmsford UK
    Posts
    26,423

    Re: [2005] Getting data between <player> tags

    if you want to post the whole html, i'll have a look at it

  8. #8
    eXtreme Programmer .paul.'s Avatar
    Join Date
    May 2007
    Location
    Chelmsford UK
    Posts
    26,423

    Re: [2005] Getting data between <player> tags

    the 2nd part (1st part by PM) of the answer to your other question is:

    vb Code:
    1. Dim addressesAcquired As Boolean = False
    2.  
    3. Private Sub WebBrowser1_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
    4.     If Not addressesAcquired And e.CurrentProgress = e.MaximumProgress Then
    5.  
    6.         Dim regAddress As String = String.Empty
    7.         Dim corrAddress As String = String.Empty
    8.  
    9.         Dim rx As New Regex("(?<=<h2>Registered Address</h2>).+(?=</div><div class=""corrAddress"">)")
    10.         Dim xmlDoc As New Xml.XmlDocument
    11.         Dim xmlRoot As Xml.XmlNode
    12.  
    13.         xmlDoc.LoadXml(rx.Match(WebBrowser1.DocumentText).Value)
    14.         xmlRoot = xmlDoc.DocumentElement
    15.         Dim nodes As Xml.XmlNodeList = xmlRoot.SelectNodes("div")
    16.         Dim msg As String = String.Empty
    17.         For Each node As Xml.XmlNode In nodes
    18.             msg &= node.InnerText & Environment.NewLine
    19.         Next
    20.         regAddress = msg & Environment.NewLine & Environment.NewLine
    21.  
    22.         rx = New Regex("(?<=<h2>Correspondence Address</h2>).+(?=</div></div><hr /><h2>Associated Organisations</h2>)")
    23.  
    24.         xmlDoc.LoadXml(rx.Match(WebBrowser1.DocumentText).Value)
    25.         xmlRoot = xmlDoc.DocumentElement
    26.         nodes = xmlRoot.SelectNodes("div")
    27.         msg = String.Empty
    28.         For Each node As Xml.XmlNode In nodes
    29.             msg &= node.InnerText & Environment.NewLine
    30.         Next
    31.  
    32.         corrAddress = msg
    33.  
    34.         rx = New Regex("(?<=<th class=""col1"">).+(?=</table><table class=""total"")")
    35.  
    36.         Dim splitHTML As String = rx.Match(WebBrowser1.DocumentText).Value
    37.         splitHTML = splitHTML.Substring(splitHTML.IndexOf("<tr>"))
    38.         splitHTML = splitHTML.Replace("<tr>", "")
    39.         splitHTML = splitHTML.Replace("</tr>", "")
    40.         splitHTML = "<splitHTML>" & splitHTML & "</splitHTML>"
    41.  
    42.         xmlDoc.LoadXml(splitHTML)
    43.         xmlRoot = xmlDoc.DocumentElement
    44.         nodes = xmlRoot.SelectNodes("td")
    45.         msg = CStr("Stock Type" & vbTab).PadRight(40) & "Owned" & vbTab & "Managed On Behalf of Others" & Environment.NewLine
    46.         Dim counter As Integer = 1
    47.         For Each node As Xml.XmlNode In nodes
    48.             If counter = 1 Then
    49.                msg &= CStr(node.InnerText & vbTab).PadRight(40)
    50.                 counter += 1
    51.             ElseIf counter = 2 Then
    52.                 msg &= node.InnerText & vbTab
    53.                 counter += 1
    54.             Else
    55.                 msg &= node.InnerText & Environment.NewLine
    56.                 counter = 1
    57.             End If
    58.         Next
    59.  
    60.         Debug.Print(regAddress & corrAddress & msg)
    61.  
    62.         addressesAcquired = True
    63.  
    64.     End If
    65. End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width