阅读XML和Visual Basic

时间:2017-10-02 14:35:08

标签: xml vb.net

我正在尝试使用简单的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>

1 个答案:

答案 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