我正在尝试将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>
答案 0 :(得分:0)
我相信你需要改变
while (xtr.Name != "Vakarinis" || xtr.Name != "Dieninis")
到:
while ((xtr.Name != "Vakarinis") && (xtr.Name != "Dieninis"))