C# значение импорта xml в метке - PullRequest
0 голосов
/ 20 апреля 2020

Я получил xml (запись. xml) с атрибутом 5 имен

<?xml version="1.0"?>
<record>
    <name>tuttionclass</name>
    <time to="18;00" from="17:00">
        <student fee="800" started_month="falgun" class="9" name="ram"/>
    </time>
    <time to="19:00" from="18:00">
        <student fee="1000" started_month="falgun" class="10" name="shyam"/>
    </time>
    <time to="20:00" from="19:00">
        <student fee="600" started_month="magh" class="8" name="hari"/>
    </time>
    <time to="18;00" from="17:00">
        <student fee="800" started_month="falgun" class="9" name="govinda"/>
    </time>
    <time to="19:00" from="18:00">
        <student fee="1000" started_month="chaitra" class="10" name="manoj"/>
    </time>
</record>

с кодированием C#

private void Form1_Load(object sender, EventArgs e)
{
    Label[] lbl = { label1, label2, label3, label4, label5 };
    string url = string.Format("..\\record.xml");
    XDocument doc = XDocument.Load(url);
    foreach (var npc in doc.Descendants("time"))
    {
        string a = (string)npc.Descendants("student").First().Attribute("name");
        for (int i = 0; i < 5; i++)
        {
            lbl[i].Text = a;
        }

Выпуск: когда я загружаю форму, она получает последнее значение во всей метке. цикл не работает.

Ответы [ 3 ]

0 голосов
/ 20 апреля 2020

Без вашего фактического XML для меня, чтобы знать, правильно это или нет, мне пришлось сделать «лучшее предположение». Это должно быть как минимум близко.

Попробуйте это:

foreach (var x in
    doc
        .Descendants("time")
        .Descendants("student")
        .Select((node, index) => new { node, index }))
{
    lbl[x.index].Text = x.node.Attribute("name").Value;
}
0 голосов
/ 21 апреля 2020

я сделал другим процессом, и он работает отлично, просто я добавил данные (DT)

private void Form1_Load(object sender, EventArgs e)
{
    Label[] lbl = { label1, label2, label3, label4, label5 };
    DataTable dt = new DataTable();
    dt.Columns.Add("name", typeof(string));
    string url = string.Format("..\\record.xml");
    XDocument doc = XDocument.Load(url);
    foreach (var npc in doc.Descendants("time"))
    {
      string a = (string)npc.Descendants("student").First().Attribute("name");
      dt.Rows.Add(new object[]{a});
    }
        for (int i = 0; i < 5; i++)
        {
            lbl[i].Text = dt.Rows[i][0].ToString();
        }
 }
0 голосов
/ 20 апреля 2020

Попробуйте поискать с LINQ. Все ошеломляющие имена должны появляться в конце каждого l oop в конце

Label[] lbl = {label1,label2,label3,label4,label5};
string url = string.Format("..record.xml");

XElement XmlDoc = XElement.Load(url);

IEnumerable Stundents = from nr in xmlDoc.Elements("student")
   where (string)nr.Attribute("name") != "" 
select nr;

foreach (XElement xEle in Students)
{  

}

Более подробную информацию можно найти здесь:

https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/concepts/linq/linq-to-xml-overview

...