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); } } }
chantier/data?questions? Use same approach