Я бы использовал XPath , чтобы извлечь нужную информацию из файла, поскольку он позволяет запрашивать именно те узлы, которые вам нужны.
Запросы XPath могут показаться довольно сложными, но для простых операций довольно легко начать работу.Вот пример кода, который извлекает значения тех узлов, которые вы упомянули с помощью XPath, и выводит их значения в консоль:
Imports System.Xml.XPath
Imports System.IO
Module Module1
Sub Main()
Using File As New FileStream("C:\out.xml", FileMode.Open, FileAccess.Read)
Dim Doc As New XPathDocument(File)
Dim Nav = Doc.CreateNavigator()
'Select and output the value of the Hsp_qseq nodes in the file.
Dim QSeqNodes = Nav.Select("//BlastOutput/BlastOutput_iterations/Iteration/Iteration_hits/Hit/Hit_hsps/Hsp/Hsp_qseq")
While QSeqNodes.MoveNext()
Console.WriteLine("Hsp_qseq: {0}", QSeqNodes.Current.Value)
End While
'Select and output the value of the Hsp_hseq nodes in the file.
Dim HSeqNodes = Nav.Select("//BlastOutput/BlastOutput_iterations/Iteration/Iteration_hits/Hit/Hit_hsps/Hsp/Hsp_hseq")
While HSeqNodes.MoveNext()
Console.WriteLine("Hsp_hseq: {0}", HSeqNodes.Current.Value)
End While
'Select and output the value of the Hsp_midline nodes in the file.
Dim MidlineNodes = Nav.Select("//BlastOutput/BlastOutput_iterations/Iteration/Iteration_hits/Hit/Hit_hsps/Hsp/Hsp_midline")
While MidlineNodes.MoveNext()
Console.WriteLine("Hsp_midline: {0}", MidlineNodes.Current.Value)
End While
Console.Read()
End Using
End Sub
End Module
Единственная интересная часть кода выше - это Dim Foo = Nav.Select("...")
бит, аргументэто выражение запроса для запроса необходимой информации - в данном случае это простой путь от корня до нужного вам узла, но можно использовать для выполнения гораздо более мощные запросы.
Это возвращает итератор для каждого совпадающего узла, так что это просто случай итерации и обработки каждого возвращаемого узла.