2017-10-02 9 views
-2

私は単純なXMLファイルとVisual Basic(2017)で作業しようとしています。XMLとVisual Basicを読む

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

何を試しましたか? – litelite

+0

試したコードを表示し、問題が発生している特定の詳細を含めてください。 –

+0

ようこそスタックオーバーフロー! [ツアー](https://stackoverflow.com/tour)にアクセスし、[お問い合わせ方法](https://stackoverflow.com/help/how-to-ask)をお読みください。 – litelite

答えて

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