Here is one way.
Private Sub ReadComment()
Dim oDoc As XPathDocument
Dim oNav As XPathNavigator
Dim oComment As XPathNavigator
Dim oChild As XPathNavigator
Dim sVariableValue = "UniqueID02"
Dim oElem As XElement = <ParentNode>
<Comment>
<CommentId>UniqueID01</CommentId>
<CommentDesc>Some comments</CommentDesc>
<CommentTypeCd>Code1</CommentTypeCd>
<CreatedDt>2013-11-29</CreatedDt>
<CreatedByUserId>user01</CreatedByUserId>
<GivenName>Mitchell</GivenName>
<Surname>Johnson</Surname>
</Comment>
<Comment>
<CommentId>UniqueID02</CommentId>
<CommentDesc>Some Comments....</CommentDesc>
<CommentTypeCd>Code2</CommentTypeCd>
<CreatedDt>2013-11-29</CreatedDt>
<CreatedByUserId>user02</CreatedByUserId>
<GivenName>Mike</GivenName>
<Surname>Jobs</Surname>
</Comment>
</ParentNode>
Using oSr As New StringReader(oElem.ToString)
oDoc = New XPathDocument(oSr)
oNav = oDoc.CreateNavigator
oComment = oNav.SelectSingleNode("child::ParentNode/Comment[CommentId='" & sVariableValue & "']")
If Not oComment Is Nothing Then
oChild = oComment.SelectSingleNode("child::CommentId")
If Not oChild Is Nothing Then
Debug.Print(oChild.Value)
End If
oChild = oComment.SelectSingleNode("child::CommentDesc")
If Not oChild Is Nothing Then
Debug.Print(oChild.Value)
End If
oChild = oComment.SelectSingleNode("child::CommentTypeCd")
If Not oChild Is Nothing Then
Debug.Print(oChild.Value)
End If
oChild = oComment.SelectSingleNode("child::CreatedDt")
If Not oChild Is Nothing Then
Debug.Print(oChild.Value)
End If
oChild = oComment.SelectSingleNode("child::CreatedByUserId")
If Not oChild Is Nothing Then
Debug.Print(oChild.Value)
End If
oChild = oComment.SelectSingleNode("child::GivenName")
If Not oChild Is Nothing Then
Debug.Print(oChild.Value)
End If
oChild = oComment.SelectSingleNode("child::Surname")
If Not oChild Is Nothing Then
Debug.Print(oChild.Value)
End If
End If
End Using
End Sub