XML VB.Net

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Public Class MainClass
    Public Shared Sub Main()
        Dim markup As String = _
            "" & Environment.NewLine & _
            "    " & Environment.NewLine & _
            "        " & Environment.NewLine & _
            "    
" & Environment.NewLine & _
            "
"
        Using nodeReader As XmlReader = XmlReader.Create(New StringReader(markup))
            nodeReader.MoveToContent()
        
            Dim xRoot As XElement = XElement.Load(nodeReader, LoadOptions.SetLineInfo)
            For Each e As XElement In xRoot.DescendantsAndSelf()
                Console.WriteLine("{0}{1}{2}", _
                    ("".PadRight(e.Ancestors().Count() * 2) & e.Name.ToString).PadRight(20), _
                    (DirectCast(e, IXmlLineInfo)).LineNumber.ToString().PadRight(5), _
                    (DirectCast(e, IXmlLineInfo)).LinePosition)
            Next
        End Using
    End Sub
End Class