XML文件正在读取数组,并将其打印出来—While循环不起作用
本文关键字:打印 While 不起作用 循环 文件 读取 数组 XML | 更新日期: 2023-09-27 18:25:42
我正试图将XML文件读取到数组中,然后将其打印出来,但是,由于某种原因,只有当我的while
只有一个参数时,它才有效。
我尝试使用的条件是:while (xtr.Name != "Vakarinis" || xtr.Name != "Dieninis")
它永远保持循环。然而,如果我只指定while (xtr.Name != "Vakarinis")
,它就可以完美地工作,并读取<Vakarinis>
元素。我试着使用|,||,括号,但没有用。可能是什么问题?
代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace xml
{
class Program
{
static void Main(string[] args)
{
Studentai s = new Studentai();
XmlTextReader xtr = new XmlTextReader("Uzduotis.xml");
xtr.WhitespaceHandling = WhitespaceHandling.None;
xtr.Read();
while (!xtr.EOF)
{
if (xtr.Name == "studentai" && !xtr.IsStartElement()) break;
// NOT WORKING --------------------------------------------
while (xtr.Name != "Vakarinis" || xtr.Name != "Dieninis")
// NOT WORKING --------------------------------------------
{
Console.WriteLine(xtr.Name);
xtr.Read();
}
Studentas tc = new Studentas();
tc.laikas = xtr.Name;
Console.WriteLine(tc.laikas);
tc.id = xtr.GetAttribute("id");
Console.WriteLine(tc.id);
tc.vardas = xtr.GetAttribute("vardas");
Console.WriteLine(tc.vardas);
xtr.Read();
xtr.Read();
tc.modulis1 = xtr.Name;
Console.WriteLine(tc.modulis1);
xtr.Read();
tc.paz1 = xtr.ReadElementString("paz1");
Console.WriteLine(tc.paz1);
tc.paz2 = xtr.ReadElementString("paz2");
Console.WriteLine(tc.paz2);
xtr.Read();
tc.modulis2 = xtr.Name;
Console.WriteLine(tc.modulis2);
xtr.Read();
tc.paz3 = xtr.ReadElementString("paz1");
Console.WriteLine(tc.paz3);
tc.paz4 = xtr.ReadElementString("paz2");
Console.WriteLine(tc.paz4);
xtr.Read();
xtr.Read();
tc.vidurkis = xtr.ReadElementString("vidurkis");
Console.WriteLine(tc.vidurkis);
s.items.Add(tc);
xtr.Read();
Console.Read();
}
xtr.Close();
s.Display();
}
}
public class Studentas
{
public string laikas;
public string id;
public string vardas;
public string modulis1;
public string paz1;
public string paz2;
public string modulis2;
public string paz3;
public string paz4;
public string vidurkis;
}
public class Studentai
{
public ArrayList items = new ArrayList();
public void Display()
{
foreach (Studentas tc in items)
{
Console.Write(tc.laikas + " " + tc.id + " " + tc.vardas + " " + tc.modulis1 + " " + tc.paz1 + " " + tc.paz2);
Console.WriteLine(tc.modulis2 + " " + tc.paz3 + " " + tc.paz4 + " " + tc.vidurkis);
}
Console.ReadLine();
}
}
}
XML文件:
<Vakarinis id="36453" vardas="Petras">
<pazymiai>
<matematika>
<paz1>5</paz1>
<paz2>7</paz2>
</matematika>
<technologija>
<paz1>8</paz1>
<paz2>4</paz2>
</technologija>
</pazymiai>
<vidurkis>6.00</vidurkis>
</Vakarinis>
<Dieninis id="75643" vardas="Jonas">
<pazymiai>
<matematika>
<paz1>8</paz1>
<paz2>7</paz2>
</matematika>
<fizika>
<paz1>7</paz1>
<paz2>10</paz2>
</fizika>
</pazymiai>
<vidurkis>8</vidurkis>
</Dieninis>
<Dieninis id="48843" vardas="Andrius">
<pazymiai>
<matematika>
<paz1>5</paz1>
<paz2>5</paz2>
</matematika>
<fizika>
<paz1>5</paz1>
<paz2>7</paz2>
</fizika>
</pazymiai>
<vidurkis>5.50</vidurkis>
</Dieninis>
<Vakarinis id="56442" vardas="Antanas">
<pazymiai>
<matematika>
<paz1>8</paz1>
<paz2>8</paz2>
</matematika>
<technologija>
<paz1>8</paz1>
<paz2>10</paz2>
</technologija>
</pazymiai>
<vidurkis>8.50</vidurkis>
</Vakarinis>
</studentai>
我认为您需要更改
while (xtr.Name != "Vakarinis" || xtr.Name != "Dieninis")
至:
while ((xtr.Name != "Vakarinis") && (xtr.Name != "Dieninis"))