Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
将xml文档读入树状视图c#_C#_Xml_Treeview - Fatal编程技术网

将xml文档读入树状视图c#

将xml文档读入树状视图c#,c#,xml,treeview,C#,Xml,Treeview,我正在尝试将xml文件读入C#上的treeview结构。Treeview应该将根节点显示为“Students”,并在该节点下显示每个student编号,该编号扩展为学生的所有其他详细信息。我不确定如何正确执行此操作并整合课程表 我编写了XML文件编码(文件名ReadXml),如下所示: <?xml version="1.0" encoding="UTF-8"?> <STUDENTS> <Course> <ID>2</ID&g

我正在尝试将xml文件读入C#上的treeview结构。Treeview应该将根节点显示为“Students”,并在该节点下显示每个student编号,该编号扩展为学生的所有其他详细信息。我不确定如何正确执行此操作并整合课程表

我编写了XML文件编码(文件名ReadXml),如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<STUDENTS>
   <Course>
      <ID>2</ID>
      <Course_Name>Bcom Acounting</Course_Name>
      <Course_Description>For Accountants</Course_Description>
   </Course>
   <Course>
      <ID>3</ID>
      <Course_Name>Engineering</Course_Name>
      <Course_Description>For students not liking the social</Course_Description>
   </Course>
   <Course>
      <ID>1</ID>
      <Course_Name>Bcom Informatics</Course_Name>
      <Course_Description>Business Computer Science</Course_Description>
   </Course>
   <Students>
      <ID>1</ID>
      <Name>Henk</Name>
      <Initials>HW</Initials>
      <Surname>Pretorius</Surname>
      <StudentNumber>91404411</StudentNumber>
      <YearOfRegistration>2014</YearOfRegistration>
      <Gender>M</Gender>
      <Course>1</Course>
   </Students>
   <Students>
      <ID>2</ID>
      <Name>Jane</Name>
      <Initials>JL</Initials>
      <Surname>Hlope</Surname>
      <StudentNumber>22223333</StudentNumber>
      <YearOfRegistration>2014</YearOfRegistration>
      <Gender>F</Gender>
      <Course>1</Course>
   </Students>
   <Students>
      <ID>3</ID>
      <Name>Samuel</Name>
      <Initials>SM</Initials>
      <Surname>Klopper</Surname>
      <StudentNumber>12341233</StudentNumber>
      <YearOfRegistration>2014</YearOfRegistration>
      <Gender>M</Gender>
      <Course>2</Course>
   </Students>
   <Students>
      <ID>4</ID>
      <Name>Sue</Name>
      <Initials>SS</Initials>
      <Surname>Callahan</Surname>
      <StudentNumber>12333222</StudentNumber>
      <YearOfRegistration>2014</YearOfRegistration>
      <Gender>F</Gender>
      <Course>2</Course>
   </Students>
   <Students>
      <ID>5</ID>
      <Name>Koos</Name>
      <Initials>KK</Initials>
      <Surname>Klopper</Surname>
      <StudentNumber>12334455</StudentNumber>
      <YearOfRegistration>2014</YearOfRegistration>
      <Gender>M</Gender>
      <Course>1</Course>
   </Students>
</STUDENTS>

2.
Bcom会计
会计师
3.
工程类
对于不喜欢社交活动的学生
1.
Bcom信息学
商业计算机科学
1.
亨克
硬件
普雷托里厄斯
91404411
2014
M
1.
2.
简
JL
赫洛普
22223333
2014
F
1.
3.
塞缪尔
性虐待
克洛普
12341233
2014
M
2.
4.
控告
党卫军
卡拉汉
12333222
2014
F
2.
5.
库斯
KK
克洛普
12334455
2014
M
1.
我在C#中使用的方法如下:

private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.Title = "Open XML Document";
    dlg.Filter = "XML Files (*.xml)|*.xml";
    dlg.FileName = "ReadXml.xml";
    if (dlg.ShowDialog() == DialogResult.OK)
    {
        try
        {
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(dlg.FileName);
            treeView1.Nodes.Clear();
            treeView1.Nodes.Add(new TreeNode(xDoc.DocumentElement.Name));
            TreeNode tNode = new TreeNode();
            tNode = (TreeNode)treeView1.Nodes[0];
            addTreeNode(xDoc.DocumentElement, tNode);
        }
        catch (Exception ex) 
        {
            MessageBox.Show(ex.Message);
        }
    }
}

private void addTreeNode(XmlNode xmlNode, TreeNode treeNode)
{
    XmlNode xNode;
    TreeNode tNode;
    XmlNodeList xNodeList;
    if (xmlNode.HasChildNodes) 
    {
        xNodeList = xmlNode.ChildNodes;
        for (int x = 0; x <= xNodeList.Count -1; x++)
        {
            xNode = xmlNode.ChildNodes[x];
            treeNode.Nodes.Add(new TreeNode(xNode.Name));
            tNode = treeNode.Nodes[x];
            addTreeNode(xNode, tNode);
        }
    }
    else 
        treeNode.Text = xmlNode.OuterXml.Trim();
}
private void按钮1\u单击(对象发送者,事件参数e)
{
OpenFileDialog dlg=新建OpenFileDialog();
dlg.Title=“打开XML文档”;
dlg.Filter=“XML文件(*.XML)|*.XML”;
dlg.FileName=“ReadXml.xml”;
if(dlg.ShowDialog()==DialogResult.OK)
{
尝试
{
XmlDocument xDoc=新的XmlDocument();
加载(dlg.FileName);
treeView1.Nodes.Clear();
添加(新树节点(xDoc.DocumentElement.Name));
TreeNode tNode=新的TreeNode();
tNode=(TreeNode)treeView1.Nodes[0];
addTreeNode(xDoc.DocumentElement,tNode);
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}
}
}
私有void addTreeNode(XmlNode XmlNode,TreeNode TreeNode)
{
xmlnodexnode;
三烯醇化物;
XmlNodeList xNodeList;
if(xmlNode.HasChildNodes)
{
xNodeList=xmlNode.ChildNodes;

对于(int x=0;x“没有带来我正在寻找的结果”并没有告诉我们全部情况。代码工作得很好。我会添加:treeView1.ExpandAll();如果不工作,则检查按钮是否工作正常。可能会删除按钮并再次添加,包括代码。