2013-05-12 6 views
0
<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<item> 
    <question>Which country's flag is this?</question> 
    <img src="North_Korea.jpg"></img> 
    <option value="Norway"></option> 
    <option value="Philippines"></option> 
    <option value="North Korea" isRight="true"></option> 
    <option value="South Korea"></option> 
    <option value="North_Korea.jpg"></option> 
</item> 
</root> 

Выше является xml-файл. Я хочу получить все значения атрибутов элемента. Но не удалось получить значение атрибутов элемента, поскольку оно повторяется. Я использовал ниже кодатрибуты атрибута извлечения повторяющихся названных элементов xml

XDocument xdoc = XDocument.Load("Assets/xml_files/flags.xml");      

     foreach (var item in xdoc.Descendants("item").Elements()) 
     { 
      switch (item.Name.LocalName) 
      { 
       case "img": 
        questions.ImageName = item.Attribute("src").Value; 
        break; 
       case "option":      
        questions.OptionA = item.Attribute("value").Value; 
        questions.OptionB = item.Attribute("value").Value; 
        questions.OptionC = item.Attribute("value").Value; 
        questions.OptionD = item.Attribute("value").Value; 
        break; 
       case "desc": 
        questions.Description = item.Value; 
        break; 
      } 
     }  

с использованием выше кода я получаю выход , как
optionA = Норвегия optionB = Норвегия optionC = Норвегия optionD = Норвегия Вместо этого должны быть разные значения, как в XML-файле. Пожалуйста, помогите мне. Спасибо за ваше время.

ответ

0

изменить код следующим образом:

var i = 0; 

var lstOptions = new List<string>(); 

XDocument xdoc = XDocument.Load("Assets/xml_files/flags.xml");      

     foreach (var item in xdoc.Descendants("item").Elements()) 
     { 
      switch (item.Name.LocalName) 
      { 
       case "img": 
        questions.ImageName = item.Attribute("src").Value; 
        break; 
       case "option":   
        lstOption.add(item.Attribute("value").Value); 
        break; 
       case "desc": 
        questions.Description = item.Value; 
        break; 
      } 
     } 

     questions.OptionA = lstOption[0]; 
     questions.OptionB = lstOption[1]; 
     questions.OptionC = lstOption[2]; 
     questions.OptionD = lstOption[3]; 
+0

спасибо за ур ответ – djain

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