2010-06-01 6 views
3

Je dispose d'un fichier XML comme ci-dessous:Comment lire les noeuds XML dans XML en utilisant C# .net

<report timestamp="3201" reportVersion="2" request="3981135340"> 
<question timedOut="false" time="3163" attempts="2" correct="true" id="13"> 
<answer status="attempt"> 
<radioButton correct="false" value="true" id="17" /> 
</answer> 
<answer status="correct"> 
<radioButton correct="true" value="true" id="15" /> 
</answer> 
</question> 
</report> 

Je veux lire les nœuds enfants en fonction de l'attribut « état » du noeud « réponse ».

+0

Votre fichier XML est manquant :) – tpeczek

+0

déjà fixe :) –

Répondre

1

LINQ to XML:

using System.Xml.Linq; 

var doc = XDocument.Parse(xml); // or XDocument.Load() 
var elements = from e in doc.Descendants("answer") 
       where e.Attribute("status").Value == "attempt" 
       select e; 

// elements will be IEnumerable<XElement> 
0

Utilisez XmlDocument et XPath:

XmlDocument document = new XmlDocument(); 
//here you should load your xml for example with document.Load(); 
XmlNodeList nodes = document.SelectNodes("/report/question/answer[@status = 'correct']/radioButton"); 

Juste le XPath modifier à vos besoins.

0

essayer celui-ci ..

foreach (XmlNode xnode in xdoc.SelectNodes("report/question/answer")) 
    { 
     if (xnode.Attributes.GetNamedItem("status").Value == "correct") 
     { 
      string value = xdoc.SelectSingleNode("report/question/answer[@status='correct']/radioButton").Attributes.GetNamedItem("id").Value; 

     } 
     if (xnode.Attributes.GetNamedItem("status").Value == "attempt") 
     { 
      string value = xdoc.SelectSingleNode("report/question/answer[@status='attempt']/radioButton").Attributes.GetNamedItem("id").Value; 
     } 
    } 
Questions connexes