2012-01-12 61 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> 

而且我currrent 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 

我怎麼可以在整個事情循環,同時還gathing只有2周的childNodes每個循環?

感謝,

大衛

回答

4

你m_nodelist只包含一個條目,因爲只有一個stn1110節點。

你可能想要的是輸出其0 + 1-ST的孩子在第一循環迭代,其2 + 3擋的孩子在第二次迭代,等等。因此,你可以做這樣的事情:

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 2012-01-12 07:31:56