Reputation: 1694
I would like to loop through the nodes in the xml below and get the values of the following elements: H_Domain, H_Environment, H_Mastered. XPathSelectElements returns an IEnumerable list and indexing cannot be applied to these XElement. Anyone has got any idea how to get values for each element as shown (relative) in the code example?
private static void GetHabitation()
{
try
{
IEnumerable<XElement> list = xdoc.XPathSelectElements("//Audit/agents/agent/questions/H0/*");
foreach (XElement element in list)
{
Console.WriteLine(element["H_Domain"].Value);
Console.WriteLine(element["H_Environment"].Value);
Console.WriteLine(element["H_Mastered"].Value);
}
return haList;
}
catch (Exception)
{
throw;
}
}
xml
<?xml version="1.0" encoding="utf-8"?>
<Audit>
<agents xmlns="">
<agent>
<questions>
<H0>
<H_Domain>RAC Raccordement Basse Tension</H_Domain>
<H_Environment>CPT travaux comptage</H_Environment>
<H_Mastered>0</H_Mastered>
</H0>
<H0>
<H_Domain>IBT Intervention r�seau Basse Tension</H_Domain>
<H_Environment>TIA Travaux aux installations a�riennes</H_Environment>
<H_Mastered>0</H_Mastered>
</H0>
<H0>
<H_Domain>IBT Intervention r�seau Basse Tension</H_Domain>
<H_Environment>AEM Actes d'exploitation et man�uvre</H_Environment>
<H_Mastered>0</H_Mastered>
</H0>
</questions>
</agent>
</agents>
</Audit>
Upvotes: 0
Views: 3332
Reputation: 167571
There is an Element
method so use
IEnumerable<XElement> list = xdoc.XPathSelectElements("//Audit/agents/agent/questions/H0");
foreach (XElement h0 in list)
{
Console.WriteLine((string)h0.Element("H_Domain"));
Console.WriteLine((string)h0.Element("H_Environment"));
Console.WriteLine((int)h0.Element("H_Mastered"));
}
Upvotes: 2