Получите Объекты от xml и добавьте к listview

Я пытаюсь добавить, получают объекты из xml документа и загружают его в listview. Я продолжаю получать Систему. Исключение OutOfMemory на проектах строки. Добавьте (проект). Что я делаю неправильно и как я делаю это правильно? Я получил этот код с начала murach визуального basic.NET. Когда я выполняю это, это добавляет случайные пробелы между объектами в listview

Structure ProjectInfo
    Dim name As String
    Dim fileextentions As ArrayList
    Dim imagepath As String
End Structure

Dim project As ProjectInfo
Dim projects As New ArrayList()

'The project is loading
Private Sub diaNewProject_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    'Set the default filepath
    txtFilepath.Text = "C:\Users\" & GetUserName() & "\Documents\Homerun IDE\Projects"

    'Load the project types
    If LoadProjects() Then
        For Each Me.project In projects
            'Add the items
            ltvItems.Items.Add(project.name)
        Next
    Else
        'Close the form
        Me.Close()
    End If

End Sub
Private Function LoadProjects() As Boolean

    Dim ProjectReader As New XmlTextReader(_globals.ProjectsListFilename)
    ProjectReader.WhitespaceHandling = WhitespaceHandling.None
    Try
        Do Until ProjectReader.Name = "projecttype"
            ProjectReader.Read()
        Loop
        Do While ProjectReader.Read()
            If ProjectReader.Name = "projecttype" Then
                project.name = ProjectReader.Item(Name)
                projects.Add(project)
            End If
        Loop
        ProjectReader.Close()
    Catch ex As XmlException
        _logger.LogException(ex, TraceEventType.Critical, "Load Projects Error", "Make sure that your projectstypes.xml file is correctly formatted. In your settings " & _
                             "you can reset the file to your its default.")
        Return False
    End Try

    Return True

End Function
1
задан muckdog12 22 July 2010 в 16:26
поделиться

2 ответа

    Do While ProjectReader.Read() 
      If ProjectReader.Name = "name" Then
        ...
      End If 
    Loop 

Следует также отметить, что project.name = ProjectReader.Item("name") вернет значение атрибута @name, поэтому для того, чтобы это сработало, структура элемента должна быть примерно такой.

<name name="project name"/>

Что, вероятно, не то, что вам нужно. Если вам нужно значение элемента, используйте project.name = ProjectReader.ReadString()

0
ответ дан 2 September 2019 в 22:51
поделиться

Здесь бесконечный цикл:

Do While ProjectReader.Name = "projecttype"
        project.name = ProjectReader.Item("name")
        'TODO: extension
        'TODO: imagepath
        projects.Add(project)
Loop

Вы должны либо продвинуть считыватель внутри цикла, либо удалить этот цикл.

2
ответ дан 2 September 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: