【问题标题】:Parse through XML in Visual Basic在 Visual Basic 中通过 XML 解析
【发布时间】:2018-05-17 09:33:25
【问题描述】:

我正在尝试解析 XML 并将每个“文件夹”添加到 ListView。随着一些 XML 文件的文件夹数量发生变化,我希望代码能够解析并获取每个文件夹。这就是 XML 的一部分:

现在我想阅读文件夹部分。这是我到目前为止的代码:

If (document.Name = "countfolders") Then
 countfolder = document.ReadInnerXml.ToString
End If

x = 1
While (countfolder >= x)
 If (document.Name = "Folder" & x) Then
  ListBox1.Items.Add(document.ReadInnerXml.ToString)
  x += 1
 End If
End While

但它只是崩溃了。你知道我做错了什么吗?

【问题讨论】:

  • 你能告诉我们崩溃时的错误是什么吗?另外,您是否可以控制 XML 的格式?因为如果是这样,您可以使用许多更好的布局来简化此操作 - 例如:<Folders><Folder>ebay</Folder><Folder>GFX Urban Gardening</Folder></Folders - 这种重复元素的想法在 XML 中很常见。如果您需要维护顺序,您可以使用<Folders><Folder id=1>ebay</Folder><Folder id=2>GFX</Folder></Folders> - 这样可以在不更改元素名称的情况下维护顺序。
  • @simonalexander2005 感谢您的快速回复。崩溃是指应用程序不再响应,但没有任何错误信息。似乎它卡在某个地方。是的,我确实可以控制制作 XML。在一个步骤中,我通过读取硬盘驱动器的文件夹来创建 XML,并将它们放入屏幕截图中提供的 XML 中。在另一个步骤中,我想将文件夹读入 ListView。你建议做什么?
  • 你有附加的 Visual Studio 调试吗?也许尝试查看“输出”窗格;您可能会在那里看到一些信息。另外,您不使用 LINQ 有什么特别的原因吗? For Each element In root.Elements.Where(Function(x) x,Name.StartsWith("Folder")): ListBox1.Items.Add(element.Value): Next
  • 如果您使用Option Strict On 可能会有所帮助。某些东西可能会被转换为其他东西并使其出错 - 该设置会让您知道变量类型不匹配。您应该更改设置,使其也成为新项目的默认设置。

标签: xml vb.net parsing


【解决方案1】:

所以我找到了解决问题的方法:

If (document.Name.Contains("Folder")) Then
 Dim test As String = document.ReadInnerXml.ToString()
 Dim doc As New XmlDocument()
 doc.LoadXml("<Folder>" & test & "</Folder>")
 Dim root As XmlNode = doc.FirstChild
 If root.HasChildNodes Then
  Dim _value = root.ChildNodes.Item(0).InnerText.Trim()
  ListBox1.Items.Add(_value)
 End If
End If

但感谢您的建议!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多