2013-02-27 2 views
-2
<Day> 
<Monday>true</Monday> 
<Tuesday>false</Tuesday> 
<Wednesday>true</Wednesday> 
<Thursday>false</Thursday> 
<Friday>true</Friday> 
<Saturday>false</Saturday> 
<Sunday>true</Sunday> 
</Day> 
<Time> 
<dateTime>12:21</dateTime> 
</Time> 

Мне нужно прочитать приведенный выше xml-файл, чтобы извлечь День и Время, чтобы данные были получены с переменной. Как достичь этого с помощью C#?Чтение XML-файла с использованием C#

+0

См. Http://stackoverflow.com/questions/2565064/reading-an-xml-file-with-net?rq=1 –

+0

Is это весь xml или просто его часть? Что такое ожидаемый результат? Какой день или дни должны быть получены? Что вы пробовали? –

+0

вы задаете вопрос, чтобы другие могли выполнить вашу работу ... – giammin

ответ

1

Я обеспечивая консольную программу, чтобы загрузить XML из строки .. Вы можете загрузить из файла обеспечения путь_к_файла, а .. (я уже упоминал, что заявление тоже) ..

Это ваш XML:

string xml = @"<testxml><Day> 
<Monday>true</Monday> 
<Tuesday>false</Tuesday> 
<Wednesday>true</Wednesday> 
<Thursday>false</Thursday> 
<Friday>true</Friday> 
<Saturday>false</Saturday> 
<Sunday>true</Sunday> 
</Day> 
<Time> 
<dateTime>12:21</dateTime> 
</Time> 
</testxml>"; 

Теперь объявить XmlDocument() и загрузки XML в него ..

 XmlDocument xDoc = new XmlDocument(); 
     xDoc.LoadXml(xml); 
     //xDoc.Load(xmlpath); 

Теперь ваш документ xml готов .. с xDoc.Load(xmlpath); может загружаться из пути к файлу.

Теперь обеспечивают XPath для узлов, которые вы хотите получить доступ к .. либо с помощью Nodelist (SelectNodes) или только один узел .. используя SelectSingleNode:

Я использую SelectNodes в течение нескольких дней .. и SelectSingleNode для DateTime.

  string xpath = "/testxml/Day/*"; 
      XmlNodeList xNode = xDoc.SelectNodes(xpath); 

      foreach (XmlNode node in xNode) 
      { 
       string day = node.LocalName; 
       Console.WriteLine(day + ", value=\"" + node.InnerText + "\""); 
      } 

выше код печатает имя узла (то есть день и его значение истина/ложь)

Теперь давайте значение для печати даты и времени:

  xpath = "/testxml/Time/dateTime"; 
      XmlNode node1 = xDoc.SelectSingleNode(xpath); 
      Console.WriteLine(node1.LocalName + ", value=\"" + node1.InnerText + "\""); 

Это был простой пример игры с XML DOM :)

Теперь весь код:

 static void Main(string[] args) 
     { 
      string xml = @"<testxml><Day> 
<Monday>true</Monday> 
<Tuesday>false</Tuesday> 
<Wednesday>true</Wednesday> 
<Thursday>false</Thursday> 
<Friday>true</Friday> 
<Saturday>false</Saturday> 
<Sunday>true</Sunday> 
</Day> 
<Time> 
<dateTime>12:21</dateTime> 
</Time> 
</testxml>"; 

      XmlDocument xDoc = new XmlDocument(); 
      xDoc.LoadXml(xml); 
      //xDoc.Load(xmlpath); 

      string xpath = "/testxml/Day/*"; 
      XmlNodeList xNode = xDoc.SelectNodes(xpath); 

      foreach (XmlNode node in xNode) 
      { 
       string day = node.LocalName; 
       Console.WriteLine(day + ", value=\"" + node.InnerText + "\""); 
      } 

      xpath = "/testxml/Time/dateTime"; 
      XmlNode node1 = xDoc.SelectSingleNode(xpath); 
      Console.WriteLine(node1.LocalName + ", value=\"" + node1.InnerText + "\""); 
      Console.ReadLine(); 
     } 

Надеюсь, что это поможет .. дайте мне знать, если у вас есть какие-либо вопросы ..

+0

Спасибо. это сделаю. – user004

0

Что вы пробовали?

Посмотрите на класс XDocument. Там вы можете сделать что-то вроде

XDocument document = XDocument.Load(XMLPATH); 
IEnumerable<XElement> day = document.Elements("Day"); 
+0

Я не пробовал, поскольку я новичок в C#. Я ищу идеи. Спасибо за ваш ответ. – user004

Смежные вопросы