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> 

Ci-dessus se trouve le fichier xml. Je veux récupérer toutes les valeurs d'attributs de l'élément. Mais impossible d'extraire la valeur des attributs de l'élément lors de sa répétition. J'utilisé ci-dessous le coderécupère les valeurs d'attribut des éléments xml nommés répétés

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; 
      } 
     }  

utilisant code ci-dessus je reçois la sortie comme
optiona = Norvège optionB = Norvège optionC = Norvège optionD = Norvège Au lieu de cela il doit y avoir des valeurs différentes que dans le fichier xml. S'il vous plaît aidez-moi. Merci pour votre temps.

Répondre

0

changer votre code à ceci:

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

Thanx for ur réponse – djain

Questions connexes