繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM