Lector XML inundando listBox excesivamente

Como principiante en C#, estoy corriendo contra una pared con lo siguiente:

Básicamente, el objeto de esto es tratar de leer información sobre clases formateadas en xml, en una tabla (cuadro de lista)... Esto no está sucediendo.

Entonces, estoy tratando de leer xml y agregar el generador de cadenas para imprimir en el cuadro de lista por línea.

en cambio, la misma declaración está impresa en 1713 líneas. Aquí está el código:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace StartProgram
{
    public partial class ModuleSummary : Form
    {
        public ModuleSummary()
        {
            InitializeComponent();
            XmlTextReader moduleReader = new XmlTextReader("c:\\users\\w1283057\\documents\\visual studio 2010\\Projects\\StartProgram\\StartProgram\\myCourses.xml");
            //to revise...

            System.Text.StringBuilder moduleEntry = new System.Text.StringBuilder();
            while(moduleReader.Read())
            {
                if ((moduleReader.NodeType == XmlNodeType.Element) && (moduleReader.Name == "moduleCode"))
                    {                        
                        moduleEntry.Append(moduleReader.ReadElementContentAsString() + " ");
                    }
                    if ((moduleReader.NodeType == XmlNodeType.Element) && (moduleReader.Name == "moduleTitle"))
                    {
                        moduleEntry.Append(moduleReader.ReadElementContentAsString() + " ");
                    }
                    if ((moduleReader.NodeType == XmlNodeType.Element) && (moduleReader.Name == "credits"))
                    {
                        moduleEntry.Append(moduleReader.ReadElementContentAsString()+" ");
                    }
                    if ((moduleReader.NodeType == XmlNodeType.Element) && (moduleReader.Name == "level"))
                    {
                        moduleEntry.Append(moduleReader.ReadElementContentAsString() + " ");
                    }
                    if ((moduleReader.NodeType == XmlNodeType.Element) && (moduleReader.Name == "semester"))
                    {
                        moduleEntry.Append(moduleReader.ReadElementContentAsString() + " test ");
                    }
                    moduleSummaryBox.Items.Add(moduleEntry);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            AddModule frm = new AddModule();
            frm.Show();
        }
    }
}

preguntado el 03 de mayo de 12 a las 20:05

Por favor, no anteponga sus títulos con "C #" y cosas así. Para eso son las etiquetas. -

Además, para su información, no use new XmlTextReader(). Eso ha quedado en desuso desde .NET 2.0. Usar XmlReader.Create() en lugar de. -

1 Respuestas

Debe leer su XML usando un XmlDocument y analizarlo de esa manera. Hay muchos tutoriales en línea... http://www.functionx.com/csharp2/xml/Lesson02d.htm

contestado el 04 de mayo de 12 a las 14:05

Gracias por su respuesta. Estoy intentando agregar varios elementos por línea y no he tenido éxito al hacerlo. maciej cygan

Para tu información, tampoco quieres hacer todo esto en el constructor. Saca todo menos el InitializeComponent() llamar a Form_Load. - Juan Saunders

@MaciejCygan Ya no puedo visualizar lo que quieres. Primero dice que quiere "imprimir en el cuadro de lista por línea" y ahora dice "agregar varios elementos por línea". Esas son declaraciones contradictorias. Debería ayudar si nos proporciona datos de muestra e ilustra cómo desea que se carguen. - golpeando

@banging Disculpas, no fui claro. Lo que quiero que pase es que tengo un XML como tal: ' ECSC401 Metodología de programación 15 1 4 Lo que quiero lograr es "ECSC401 Metodología de programación 15 1 4" en una sola línea dentro de un cuadro de lista y luego el siguiente módulo en la línea siguiente y así sucesivamente ... - maciej cygan

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.