阅读XML和循环

时间:2012-01-12 07:16:33

标签: xml vb.net

嘿所有我有一个XML文件,我试图循环。我当前的代码做得很好,但它只对前2个节点做了。它一遍又一遍地重复节点。

我的XML结构是这样的:

 <?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个子节点的同时遍历整个事物?

谢谢,

大卫

1 个答案:

答案 0 :(得分:4)

您的m_nodelist只包含一个条目,因为只有一个stn1110节点。

你可能想要的是在第一次循环迭代中输出它的0 + 1-st子节点,在第二次迭代中输出它的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

(Hooray,最后是Step关键字的一些用例!)