Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML读取器过度泛滥列表框_C#_Xml_Visual Studio_Stringbuilder_Xmlreader - Fatal编程技术网

C# XML读取器过度泛滥列表框

C# XML读取器过度泛滥列表框,c#,xml,visual-studio,stringbuilder,xmlreader,C#,Xml,Visual Studio,Stringbuilder,Xmlreader,作为c#的初学者,我遇到了以下问题: 基本上,其目的是尝试将xml格式的类的信息读入表(listbox)。。。这不是真的 所以,我尝试读取xml并附加字符串生成器,以便每行打印到listbox 相反,相同的语句在1713行上被引用。代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Syst

作为c#的初学者,我遇到了以下问题:

基本上,其目的是尝试将xml格式的类的信息读入表(listbox)。。。这不是真的

所以,我尝试读取xml并附加字符串生成器,以便每行打印到listbox

相反,相同的语句在1713行上被引用。代码如下:

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();
        }
    }
}

您需要使用XmlDocument读取XML并以这种方式解析它。网上有很多教程

请不要在标题前加上“C#”之类的前缀。这就是标签的用途。另外,仅供参考,不要使用
newXMLTextReader()
。自.NET2.0以来,它一直被弃用。请改用
XmlReader.Create()
。谢谢您的回复。我试图在每行中附加几个元素,但我做的不成功,你也不想在构造函数中完成所有这些。将
InitializeComponent()
调用以外的所有调用拉入
Form\u Load
@MaciejCygan我无法再想象你想要什么了。首先,您说希望“每行打印到列表框”,现在您说“每行附加几个元素”。这些说法相互矛盾。如果您能给我们一些示例数据,并说明您希望如何加载,应该会有所帮助。@banking抱歉,我不清楚。我想做的是我有一个XML,比如:“ECSC401编程方法15 14”我想在列表框中的一行上实现“ECSC401编程方法15 14”,然后在接下来的一行上实现下一个模块,依此类推。。。