Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取XML和Visual Basic_Xml_Vb.net - Fatal编程技术网

读取XML和Visual Basic

读取XML和Visual Basic,xml,vb.net,Xml,Vb.net,我正在尝试使用一个简单的XML文件和Visual Basic(2017) xml文件如下所示。我有一个带有一些文本框的表单设置。第一个框,用户将在其中输入值1、2或3。然后,我需要根据输入到第一个文本框中的内容,将来自世界名称、大小和人口的xml数据写入3个单独的文本框中。希望这是有道理的 <worlddetails> <worlds> <code>1</code> <worldname>Planet 1> <size>

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

首先,您的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

您尝试了什么?显示您尝试过的代码,并包括您遇到问题的具体细节。欢迎使用堆栈溢出!请阅读。此外,
world details
world name
是无效的XML标记名(标记名中不能有空格),并且
Planet 1>
在XML中无效(您的结束标记格式不正确)。那个文件甚至不是我刚才输入的有效XML。我正在努力解决这个问题,因为我已经看到了关于如何读取和显示xml数据的文章,但我无法解决如何使它只根据在第一个文本框中看到的内容进行读取。请原谅我的英语。