2016-10-22 6 views
-1

У меня есть XML, как:элемент XML чувствителен к регистру Проблема

<FlOOR> 
      <FloorID>1</FloorID> 
      <Floor>1st Floor</Floor> 
</FlOOR> 

Я пытаюсь использовать

var floorList = document.Root.Descendants("FLOOR").Elements("Floor").Select(x => x.Value).ToList(); 

, но не полезно. Я хочу получить значение <Floor> в списке.

+0

У вас есть возможность отображать как минимум два элемента, которые вы хотите включить в список? – jdweng

+0

Я хотел получить ' 1-й этаж' внутреннее значение. Имя родительского узла также является FLOOR. –

+0

Вы сказали, что хотите СПИСОК, который обычно подразумевает более одного результата. – jdweng

ответ

0
foreach (XElement element in document.Descendants("Floor")) 
      { 
      cmbBoxFloor.Items.Add(element.Value); 
      } 
0

XML чувствителен к регистру. Если вы проигнорируете этот факт, ваш код не будет работать. Я не уверен, почему это проблема.

+0

Да, его регистр чувствителен к регистру, но 'document.Root.Descendants (« FLOOR »). Элементы (« Этаж »). Выберите (x => x.Value) .ToList();' НЕ работает, а элемент 'XElement в document.Descendants («Этаж») работал. –

0

Существует проблема с кодировкой. Когда я набрал имена тегов, я не получил результатов. Когда я копировал и вставлял имена тегов в код, он работал.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument document = XDocument.Load(FILENAME); 
      var floorList = document.Descendants("FlOOR").Select(x => new 
      { 
       id = (int)x.Element("FloorID"), 
       name = (string)x.Element("Floor") 
      }).ToList(); 
     } 
    } 
}