如何根据特定日期读取c#中的xml值? [英] How to Read xml values in c# according to particular day?

查看:75
本文介绍了如何根据特定日期读取c#中的xml值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个xml文件存储特定日期,当天的时间和特定时间的文件名。如何在C#中使用XML Reader只获取特定日期的值(时间和文件名)。请问任何人可以帮助我吗?



我的XML文件是这样的





I have one xml file which is stored Particular day, timings of the day, and the file name of particular time. How Can I get only particular day's value (timings and file names) using XML Reader in C#. Please can any one help me?

My XML file is like this


<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <MediaPlayer>
- <Body>
  <Name>Mp3 Player</Name>
- <Days>
- <Monday>
  <Day>Monday</Day>
  <FiveToNine>Old Kannada</FiveToNine>
  <NineToLeven>New Kannada</NineToLeven>
  <LevenToThirteen>New Hindi</LevenToThirteen>
  <ThirteenToFourteen>Old Hindi</ThirteenToFourteen>
  <ForteenToFifteen>Old English</ForteenToFifteen>
  <FifteenToSeventeen>New English</FifteenToSeventeen>
  <SeventeenToEighteen>Old Malayalam</SeventeenToEighteen>
  <EighteenToTwenty>New Malayalam</EighteenToTwenty>
  <TwentyToTwentytwo>Old Tamil</TwentyToTwentytwo>
  <TwentytwoToZero>New Tamil</TwentytwoToZero>
  <ZeroToFive>Arabic</ZeroToFive>
  </Monday>
- <Tuesday>
  <Day>Tuesday</Day>
  <FiveToNine>AAA</FiveToNine>
  <NineToLeven>BBB</NineToLeven>
  <LevenToThirteen>CCC</LevenToThirteen>
  <ThirteenToFourteen>DDD</ThirteenToFourteen>
  <ForteenToFifteen>EEE</ForteenToFifteen>
  <FifteenToSeventeen>FFF</FifteenToSeventeen>
  <SeventeenToEighteen>GGG</SeventeenToEighteen>
  <EighteenToTwenty>HHH</EighteenToTwenty>
  <TwentyToTwentytwo>III</TwentyToTwentytwo>
  <TwentytwoToZero>JJJ</TwentytwoToZero>
  <ZeroToFive>KKK</ZeroToFive>
  </Tuesday>
  </Days>
  </Body>
  </MediaPlayer>







我的代码是这样的






and my code is like this

XmlTextReader reader = new XmlTextReader(@"D:\MediaPlayer.xml");
            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    switch (reader.Name)
                    {
                        case "FiveToNine":
                            reader.Read();
                            textBox1.Text = reader.Value;
                            break;
                        case "NineToLeven":
                            reader.Read();
                            listBox1.Items.Add(reader.Value);
                            break;
                    }
                }
            }
            reader.Close();

推荐答案

It将很容易使用XMlDocument和Xpath而不是XMlTextReader。尝试以下代码





It will be easy to use the XMlDocument and Xpath instead of XMlTextReader.Try the following code


string childNodeName = comboBox1.Text;//Monday,Tuesday....
          string XmlFile = @"D:\MediaPlayer.xml";
          if (string.IsNullOrEmpty(childNodeName))
          {
              return;
          }
          XmlDocument xmlDoc = new XmlDocument();
          if (File.Exists(XmlFile))
          {
              xmlDoc.Load(XmlFile);
              XmlNodeList listRoot = xmlDoc.DocumentElement.SelectNodes("/MediaPlayer/Body/Days/" + childNodeName); //Xpath

              foreach (XmlNode nodesDay in listRoot)
              {
                  if (childNodeName == nodesDay.Name)
                  {
                      XmlNodeList listrootDay = nodesDay.ChildNodes;
                      textBox1.Text = nodesDay.Name;
                      foreach (XmlNode nodeChild in listrootDay)
                      {
                          listBox1.Items.Add(nodeChild.Name + "-" + nodeChild.InnerText);
                      }
                  }
              }
          }


这篇关于如何根据特定日期读取c#中的xml值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆