[英]XML file reading into array, printing it out - While loop not working
我试图将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"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.