我有这个 XML 文件,我从中获取所有数据:
<?xml version="1.0" encoding="utf-8"?>
<Tabel>
<Member>
<Naam>Cruciatum</Naam>
<Kills>10</Kills>
<Deaths>2</Deaths>
<Score>2222</Score>
</Member>
<Member>
<Naam>test</Naam>
<Kills>123</Kills>
<Deaths>12</Deaths>
<Score>12222</Score>
</Member>
<Member>
<Naam>test2</Naam>
<Kills>159</Kills>
<Deaths>12</Deaths>
<Score>2222</Score>
</Member>
<Member>
<Naam>test3</Naam>
<Kills>159</Kills>
<Deaths>122</Deaths>
<Score>222284</Score>
</Member>
<Member>
<Naam>test4</Naam>
<Kills>15</Kills>
<Deaths>1229</Deaths>
<Score>129453</Score>
</Member>
</Tabel>
我把它全部显示在 5 个不同的列表框中(“成员”下的每个子节点 1 个)。
我有以下代码可以做到这一点。
Public Class Rank
Dim memberNodes As XmlNodeList
Dim memberNode As XmlNode
Dim x As Short
Dim dataNodes As XmlNodeList
Dim firstinrow As Boolean
Dim datalist(5) As String
Dim y As Short
Private Sub Rank_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
lstView.Items.Clear()
x = 0
Dim doc As New XmlDocument()
doc.Load("C:\Members.xml")
memberNodes = doc.GetElementsByTagName("Member")
For Each memberNode In memberNodes
dataNodes = memberNode.ChildNodes
y = 1
For Each dataNode As XmlNode In dataNodes
datalist(y) = dataNode.InnerText
datalist(0) = (x + 1).ToString
y += 1
Next
datalist(5) = datalist(4)
datalist(4) = FormatNumber((datalist(2) / datalist(3)), 3)
Dim lvi As New ListViewItem(datalist)
lstView.Items.Add(lvi)
x += 1
Next
End Sub
End Class
该代码目前运行良好,显示完整列表。但是现在我需要按列表视图的 Score 列中的值排序的所有数据,因此在以下示例中:
我需要第一行说:“1 test3 159 122 1.303 222284”
第二行得分第二名等。
更新: 按照@SteveDog 的建议,我现在使用 1 个列表视图,而不是单独的列表框