2012-01-12 39 views
2

ちょっと、私はループを試みているXMLファイルを持っています。私の現在のコードはこれをうまくやっていますが、最初の2つのノードに対してのみこれを行います。ノードを何度も何度も繰り返します。XMLとループを読む

マイXMLのstructorはこのようなものです:

<?xml version="1.0" encoding="Windows-1252"?> 
<stn1110> 
    <jobid>-87</jobid> 
    <sn_siab>677 6086tyhg67y</sn_siab> 
    <jobid>-35667</jobid> 
    <sn_siab>677 63436hyh</sn_siab> 
    <jobid>-357689</jobid> 
    <sn_siab>677 87888888</sn_siab> 
    <jobid>-50000</jobid> 
    <sn_siab>677 gdfr4365454</sn_siab> 
    <jobid>-366877</jobid> 
    <sn_siab>677 nfrrt444445</sn_siab> 
</stn1110> 

そして、私のとれVB.netコードはこれです:

Dim file As String = "C:\bin\Debug\stn1110.xml" 

    Dim m_xmld As XmlDocument 
    Dim m_nodelist As XmlNodeList 
    Dim m_node As XmlNode 

    m_xmld = New XmlDocument() 
    m_xmld.Load(file) 
    MessageBox.Show(m_xmld.OuterXml) 
    m_nodelist = m_xmld.SelectNodes("/stn1110") 

    For Each m_node In m_nodelist 
     Dim firstNameValue = m_node.ChildNodes.Item(0).InnerText 
     Dim lastNameValue = m_node.ChildNodes.Item(1).InnerText 

     Debug.Print(firstNameValue) 
     Debug.Print(lastNameValue) 
    Next 

まだ唯一の2つのchildNodesをgathingしながら、どのようにすることができます私はループ全体のことを通してすべてのループ?一つだけstn1110のノードが存在するため

おかげで、

デビッド

答えて

4

はあなたのm_nodelistは、唯一つのエントリが含まれています。

あなたはおそらく欲しいのは最初のループ反復でその0 + 1番目の子は、このようになど2回目の反復でその2 + 3-RD子供は、あなたがこのような何かを行うことができ、出力にあります

Dim m_node = m_xmld.SelectSingleNode("/stn1110") 

For i = 0 To m_node.ChildNodes.Count - 1 Step 2 
    Dim firstNameValue = m_node.ChildNodes.Item(i).InnerText 
    Dim lastNameValue = m_node.ChildNodes.Item(i+1).InnerText 

    Debug.Print(firstNameValue) 
    Debug.Print(lastNameValue) 
Next i 

Stepキーワードの万歳、最終的にいくつかのユースケース!)

+0

非常に素晴らしいです!ありがとうございます!! :o) – StealthRT