这是你需要的代码:两个按钮(一个用于“搜索”,另一个用于清晰的文本框和列表视图字段)以及一个文本框和一个列表视图。
的Form Load
其设置列表视图列:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ListView1.Columns.Add("Lesson", 100, HorizontalAlignment.Left)
ListView1.Columns.Add("Grade", 150, HorizontalAlignment.Left)
End Sub
并为搜索按钮单击事件:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim isStudent As Boolean = False
Dim XmlDoc As XmlDocument = New XmlDocument()
Dim str(2) As String
Try
XmlDoc.Load("Put your XML file path here!")
Catch ex As Exception
MsgBox("XML Loading failled : " & vbCrLf & ex.Message & vbCrLf)
End Try
Dim element As XmlNodeList
Try
element = XmlDoc.DocumentElement.GetElementsByTagName("student")
For Each dataNode In element
//Go into data node
If dataNode.LocalName = "student" Then
For Each studentNode In dataNode.ChildNodes
//Loops the student childnodes
If studentNode.LocalName = "name" Then
If studentNode.InnerText.ToString.Trim.Equals(TextBox1.Text) Then
isStudent = True
Else
isStudent = False
End If
ElseIf studentNode.LocalName = "tests" And isStudent Then
For Each tests In studentNode.ChildNodes
//Loops tests childnodes...
If tests.LocalName = "test" Then
For Each test In tests.ChildNodes
//Loops test childnodes
If test.LocalName = "lesson" Then
str(0) = test.InnerText.ToString.Trim
ElseIf test.LocalName = "grade" Then
str(1) = test.InnerText.ToString.Trim
End If
Next
ListView1.Items.Add(New ListViewItem({str(0), str(1)}))
End If
Next
End If
Next
End If
Next
Catch ex As Exception
MsgBox("XML reading failed at element: " & vbCrLf & ex.Message & vbCrLf)
End Try
End Sub
清除按钮只是让你不断地寻找新的学生:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
TextBox1.Text = ""
ListView1.Clear()
ListView1.Columns.Add("Lesson", 100, HorizontalAlignment.Left)
ListView1.Columns.Add("Grade", 150, HorizontalAlignment.Left)
End Sub
尝试研究代码并理解XML阅读作品。看起来很难,但这种方式总是相同的,它取决于你的XML结构:节点和子节点。但总是一样的!必须有一个最简单的方法来做到这一点,但这是编程的好习惯。
显示您尝试阅读XML的代码。 – Tim
我建议使用LINQ to XML - 这很容易,IMO。 – Tim
我想运行For Each,使用特定名称的学生,并显示所有测试,您认为使用LINQ可能吗? – user3800799