I am pulling XML data from a server using an API and use LINQ to store the results in an anonymous object list, however some of the data is returning "null" and I figured it must be due to the XML document heirarchy. See below-
<export type="orderexport" date="13/01/2015" time="5:01:18 PM">
  <order>
    <OrderNumber>149612</OrderNumber>
    <CustomerNumber>146538</CustomerNumber>
    <Currency>AUD</Currency>
    <Locale>en_AU</Locale>
    <GrandTotal>1548.98</GrandTotal>
    <TotalBeforeTax>1411.58</TotalBeforeTax>
    <TotalTax>137.4</TotalTax>
    <Addresses>
      <BillingAddress>
        <Email>XXXXXX@XXXXXXX.com.au</Email>
      </BillingAddress>
      <ShippingAddress>
        <Email>XXXXXX@XXXXXXX.com.au</Email>
      </ShippingAddress>
    </Addresses>
    <LineItems>
      <LineItem>...</LineItem>
      <LineItemSalesDiscount>...</LineItemSalesDiscount>
      <LineItemDiscount>...</LineItemDiscount>
      <LineItemShipping>...</LineItemShipping>
      <LineItemPayment>...</LineItemPayment>
      <LineItemPaymentDiscount>...</LineItemPaymentDiscount>
    </LineItems>
    <CreationDate>13/01/2015 9:42:59 AM</CreationDate>
    <ViewedOn>13/01/2015 9:44:20 AM</ViewedOn>
    <cancelledon/>
    <readyforshippingon>13/01/2015 1:58:41 PM</readyforshippingon>
    <paidon>13/01/2015 9:43:15 AM</paidon>
    <ordercomment>
      removed
    </ordercomment>
  </order>
</export>
I can pull all the elements fine at the first level, however I need to include the tag but it is nested under another level, when I try to get its value like I get the rest of it I get a null value.
        //Create Request
        myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
        myHttpWebRequest.Method = "GET";
        myHttpWebRequest.ContentType = "text/xml; encoding='utf-8'";
        //Get Response
        myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
        //Load response stream into XMLReader
        myXMLReader = new XmlTextReader(myHttpWebResponse.GetResponseStream());
        var xdoc = XDocument.Load(myXMLReader);
        var result = from x in xdoc.Root.Elements()
                     select new
                     {
                         OrderNumber = (string)x.Element("OrderNumber"),
                         CustomerNumber = (string)x.Element("CustomerNumber"),
                         GrandTotal = (double)x.Element("GrandTotal"),
                         Email = (string)x.Element("Email")
                     };
OUTPUT: "{ OrderNumber = "149612", CustomerNumber = "146538", GrandTotal = 1548.98, Email = null }"
I have never read an XML document before but I'm fairly sure the above code is right, I'm sure I just need to change the LINQ expression line for Email but I don't know what it should be.
Regards
 
     
     
    