I am trying to read the nested elements in the xml below. So far I have been able to read data in chantier/data
element, but now the problem lies in how can I read the data inside <questions><sitePreparation> and <ctm>
? Xml file and code have been shorted a bit because they are too long. Any help is much appreciated.
<?xml version="1.0" encoding="UTF-8"?>
<Audit>
<controls>
<guid>
0001
</guid>
<templateVersion>
1.0
</templateVersion>
</controls>
<chantier>
<data>
<V2>V2</V2>
<V3>V3</V3>
<V3_1>V3_1</V3_1>
<V4>V4</V4>
<oresTiersPanel>
<S1_2>S1_2</S1_2>
</oresTiersPanel>
<agentsTiersPanel>
<S1_2_2>S1_2_2</S1_2_2>
</agentsTiersPanel>
</data>
<questions>
<sitePreparation>
<P1_Question>P1_Q</P1_Question>
<P6_Question>P6_Q</P6_Question>
</sitePreparation>
<ctm>
<C1_Question>C1_Q</C1_Question>
<C2_Question>C2_Q</C2_Question>
<C2_1>C2_1</C2_1>
</ctm>
</questions>
</chantier>
</Audit>
private static void ReadXml()
{
XDocument xdoc = XDocument.Load("sipp.xml");
if (xdoc.Root != null)
{
var chantier = from ch in xdoc.Root.Elements("chantier").Elements("data")
let agentsTiersPanel = ch.Element("agentsTiersPanel")
where agentsTiersPanel != null
select new
{
v2 = (string)ch.Element("V2"),
v3 = (string)ch.Element("V3"),
v3_1 = (string)ch.Element("V3_1"),
v4 = (string)ch.Element("V4"),
S1_2_2 = (string)agentsTiersPanel.Element("S1_2_2"),
S1_2_2_1 = (string)agentsTiersPanel.Element("S1_2_2_1"),
S1_2_3 = (string)agentsTiersPanel.Element("S1_2_3"),
S3 = (string)ch.Element("S3"),
S3_1 = (string)ch.Element("S3_1"),
P1_Question = (string)ch.Element("P1_Question")
};
foreach (var item in chantier)
{
Console.WriteLine(item.v2 + " " + item.v3);
}
}
}