【问题标题】:Adding numbering when loading from XML files从 XML 文件加载时添加编号
【发布时间】:2013-08-16 18:27:35
【问题描述】:

我有一个Student.xmlLecturer.xml。当用户创建一个新学生时,他必须输入姓名、姓氏,然后从我的Lecturer.xml 加载的列表中选择一位讲师。

我如何获得讲座列表:

if (File.Exists("lecturer.xml"))

{

   XElement lecturelist = XElement.Load("lecturer.xml");
   Console.WriteLine("Select a lecturer:");

   foreach (var mainelement in lecturelist.Elements())
       {
           foreach (var subelement in mainelement.Elements())
               {
                   if (subelement.Name == "Name")
                       Console.Write("Lecturer: {0}", subelement.Value);

                   if (subelement.Name == "Surname")
                       Console.Write(", {0}", subelement.Value);

                   if (subelement.Name == "Specialisation")
                       Console.Write(" Subject: {0} \n", subelement.Value);
               }
       }

       Console.ReadLine();

}

否则 { Console.WriteLine("讲师.xml 文件丢失或损坏...");

   Console.ReadLine();

}

现在这会创建一个讲座列表 示例:

讲师:John, Kingsley 主题:数学

讲师:Ben,Hur 主题:英语

如何更改我的代码以使其显示:

1 - 讲师:John, Kingsley 主题:数学

2 - 讲师:Ben,Hur 主题:英语

这样用户可以输入 1 或 2 来选择讲师?

【问题讨论】:

  • foreach循环之前定义一个整数,将其初始值设置为1,然后将Console.Write("Lecturer: {0}", subelement.Value);改为Console.Write("{0} - Lecturer: {1}", number, subelement.Value);。不要忘记增加整数。
  • 我假设您想将此值拉入应用程序?
  • @ Malachi 是的,必须使用该号码,以便我可以将讲师保存到我的 student.xml 文件中。
  • 然后你需要将它添加到你的讲师文件中作为每个讲师的“id”。您真的不想仅根据文件中的顺序对它们进行编号,因为它们可能会被重新排序。您可以在 UI 中向用户显示一个与教师 ID 不同的数字,但不要将 UI 选择存储为 ID。
  • 是的,类似的。就像@Malachi 所说的,xml 通常用于传递数据,但它可以用于数据持久性(如数据库),但是您肯定需要添加 id 以使其可维护。

标签: c# console xelement


【解决方案1】:

设置变量,这样如果他们不选择一个就不会出错。

Int intLecturerNum = 1;

然后从控制台中提取他们的答案。

intLecturerNum = Convert.ToInt(Console.Readline());

自从我不得不这样做以来已经有一段时间了,我正在使用 YesNo 来做这件事,我还需要做更多的事情,这样我才能得到正确的答案我的变量,但这是您拉入变量的一般方式。

XElement lecturelist = XElement.Load("lecturer.xml");
Console.WriteLine("Select a lecturer:");

String strProf;
Int i = 1;


foreach (var mainelement in lecturelist.Elements())
    {
        Console.Write(i.ToString() + " - ");
        foreach (var subelement in mainelement.Elements())
            {


                if (subelement.Name == "Name")
                {
                    Console.Write("Lecturer: {0}", subelement.Value);

                }
                if (subelement.Name == "Surname")
                    Console.Write(", {0}", subelement.Value);

                if (subelement.Name == "Specialisation")
                    Console.Write(" Subject: {0} \n", subelement.Value);

                i++;
            }
    }

\\ somewhere after this is where you read in the answer given by the user

您可以创建一个列表并在打印出讲师时填充该列表。

你可以创建一个类,它允许你创建 Lecturer 对象并给它们一个值。

...

【讨论】:

  • 问题是如何给每个讲师分配一个编号?然后知道当用户按1时,他刚刚选择的讲师就是被显示的那个?
  • 当我这样做时,输入显示为1 - Lecturer: Ben, 2Hur 3Subject: 然后对所有讲师重复
  • 虽然这会在每个讲师旁边显示一个数字,但我仍然无法识别女讲师以实际保存到我的 students.xml 我需要知道当我按 1 时我的 students.xml 添加<lecturer>John, Kingsley</lecturer> 到我的 student.xml
  • 就像我在对该问题的另一条评论中所说的那样,这将比您想要做的更复杂。您必须设置类来创建对象,或者设置一个数组列表来保存名字和姓氏以及 ID 号。然后制定一种将 XML 元素附加到学生 XML 的方法。我给你的是一种用户选择选项的方法,因为这就是问题所要求的。
  • 感谢您的回复。我会做更多的研究并尝试其他方法。考虑使用Dictionary<>,这样我就可以在其中添加所有带数字的讲师详细信息。
猜你喜欢
  • 1970-01-01
  • 2011-07-03
  • 2011-06-20
  • 1970-01-01
  • 2013-08-04
  • 2016-03-06
  • 2011-10-11
  • 1970-01-01
  • 2011-01-23
相关资源
最近更新 更多