You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中通过循环读取XML文档并更新ListView的问题

问题分析与解决代码

你的代码核心问题是循环中始终使用根节点获取数据,而非遍历到的每个子节点,导致每次都添加第一个节点的内容。另外,重复加载XML文档属于冗余操作,优化后的代码如下:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' 只加载一次XML文档
    Dim doc As XDocument = XDocument.Load("saved_data.xml")
    Dim rootNode As XElement = doc.Root

    ' 遍历根节点下的所有<data>子节点
    For Each dataNode In rootNode.Elements("data")
        Dim str(1) As String ' 仅需两个元素,VB数组索引从0开始
        str(0) = dataNode.Element("NAME").Value
        str(1) = dataNode.Element("PHONE").Value
        Dim itm As New ListViewItem(str)
        ListView1.Items.Add(itm)
    Next
End Sub

关键修正点

  • 移除重复的XDocument.Load调用,避免重复IO操作
  • 循环中使用遍历到的dataNode节点获取NAME和PHONE的值,而非根节点
  • 优化字符串数组长度,无需声明为str(2)
  • 简化ListViewItem的初始化写法

适配的XML结构示例

如果你的XML结构是根节点包含多个<data>子节点,如下所示,上述代码可正确遍历所有节点:

<root>
  <data>
    <NAME>张三</NAME>
    <PHONE>123456</PHONE>
  </data>
  <data>
    <NAME>李四</NAME>
    <PHONE>789012</PHONE>
  </data>
</root>

内容的提问来源于stack exchange,提问作者Rakshita Jaju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:50:22