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