嘿所有我有一个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个子节点的同时遍历整个事物?
谢谢,
大卫
答案 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
关键字的一些用例!)