something like this. this is the xml i used to test it:

<?xml version="1.0" encoding="utf-8"?>
<Points>
<Value x="10" y="10"/>
<Value x="20" y="20"/>
<Value x="30" y="30"/>
<Value x="40" y="40"/>
<Value x="50" y="50"/>
</Points>
vb Code:
  1. Public Class Form1
  2.  
  3.     Dim xmlPoints() As Point
  4.  
  5.     Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  6.         Dim xml As XDocument = XDocument.Load("xml.txt")
  7.         Dim points() As Point = (From node In xml...<Value> Select New Point(CInt(node.@x), CInt(node.@y))).ToArray
  8.  
  9.         e.Result = points
  10.  
  11.     End Sub
  12.  
  13.     Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
  14.         xmlPoints = DirectCast(e.Result, Point())
  15.         Me.Invalidate()
  16.     End Sub
  17.  
  18.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  19.         BackgroundWorker1.RunWorkerAsync()
  20.     End Sub
  21.  
  22.     Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
  23.         If xmlPoints Is Nothing Then Return
  24.         e.Graphics.DrawLines(Pens.Red, xmlPoints)
  25.     End Sub
  26.  
  27. End Class