我正在尝试使用简单的XML文件和Visual Basic(2017)。
xml文件如下。我有一些表格设置与一些文本框。第一个框,用户将输入值1,2或3.然后我需要根据输入到第一个文本框中的内容将世界名称,大小和总体的xml数据写入3个单独的文本框。希望这是有道理的。
<worlddetails>
<worlds>
<code>1</code>
<worldname>Planet 1>
<size>36000</size>
<population>34000000</population>
</worlds>
<worlds>
<code>2</code>
<worldname>Planet 2>
<size>35000</size>
<population>24000000</population>
</worlds>
<worlds>
<code>3</code>
<worldname>Planet 3>
<size>46000</size>
<population>14000000</population>
</worlds>
</worlddetails>
答案 0 :(得分:0)
首先,您的XML是错误的。它应该是这样的:
<worlddetails>
<worlds>
<world name="1">
<code>1</code>
<size>36000</size>
<population>34000000</population>
</world>
<world name="2">
<code>2</code>
<size>35000</size>
<population>24000000</population>
</world>
<world name="3">
<code>3</code>
<size>46000</size>
<population>14000000</population>
</world>
</worlds>
</worlddetails>
修复后,您只需使用此功能即可实现目标(未经测试,您可能需要对其进行修改)并将行星编号作为参数传递。
它会将所需的行星数据收集到一个字符串数组中,该函数将在函数结束后返回。如果无法在XML文件中找到行星,该函数将返回-1
到数组的第一个位置。
Private Function getPlanetData(ByVal planetNo As Integer) As String()
Dim planetData() As String = New String() {}
Dim i As Integer = 0
Dim doc As New Xml.XmlDocument
Try
doc.Load("yourXMLDocument.xml")
Dim node As XmlNode = doc.SelectSingleNode("world[@name='" & planetNo & "']")
If Not (node Is Nothing) Then
Dim childList As Xml.XmlNodeList
childList = node.ChildNodes
ReDim planetData(childList.Count - 1)
For Each child As XmlNode In childList
planetData(i) = child.InnerText
i += 1
Next
Else
planetData(0) = -1
End If
Return planetData
Catch ex As Exception
planetData(0) = -1
Return planetData
MsgBox("There was an error when collecting data. ERROR: " & ex.message)
End Try
End Function