XML文件读入数组,打印出来 - 循环不工作

时间:2014-10-04 17:12:42

标签: c# arrays xml while-loop

我正在尝试将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>

1 个答案:

答案 0 :(得分:0)

我相信你需要改变

while (xtr.Name != "Vakarinis" || xtr.Name != "Dieninis")

到:

while ((xtr.Name != "Vakarinis") && (xtr.Name != "Dieninis"))