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
相关产品推荐
相关产品推荐

