0

I have a class CampaignRows with 10 properties as mentioned in my KeywordPerformanceReportColumns columns

What i has a XDocumet loadded with following xml

<?xml version="1.0" encoding="utf-8"?>
    <Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns="http://adcenter.microsoft.com/advertiser/reporting/v5/XMLSchema" >
      <KeywordPerformanceReportColumns>
        <Column name="CampaignName" />
        <Column name="AdGroupName" />
        <Column name="Keyword" />
        <Column name="Devicetype" />
        <Column name="Clicks" />
        <Column name="Impressions" />
        <Column name="Ctr" />
        <Column name="AverageCpc" />
        <Column name="ConversionRate" />
        <Column name="GregorianDate" />
      </KeywordPerformanceReportColumns>
      <Table>
        <Row>
          <CampaignName value="sdfdsf October 4, 2011" />
          <AdGroupName value="sdfsdf and sdf" />
          <Keyword value="sdf sdf" />
          <Devicetype value="Computer" />
          <Clicks value="0" />
          <Impressions value="7" />
          <Ctr value="0.0000" />
          <AverageCpc value="0.00" />
          <ConversionRate value="" />
          <GregorianDate value="4/1/2014" />
        </Row>
         <Row>
          <CampaignName value="sdfdsf October 5, 2011" />
          <AdGroupName value="sdfsdf and sdf" />
          <Keyword value="sdf sdf" />
          <Devicetype value="Computer" />
          <Clicks value="0" />
          <Impressions value="1" />
          <Ctr value="0.0000" />
          <AverageCpc value="0.00" />
          <ConversionRate value="" />
          <GregorianDate value="4/1/2014" />
        </Row>
         <Row>
          <CampaignName value="sdfdsf October 6, 2011" />
          <AdGroupName value="sdfsdf and sdf" />
          <Keyword value="sdf sdf" />
          <Devicetype value="Computer" />
          <Clicks value="0" />
          <Impressions value="7" />
          <Ctr value="0.0000" />
          <AverageCpc value="0.00" />
          <ConversionRate value="" />
          <GregorianDate value="4/1/2014" />
        </Row>
     </Table>
      <Copyright>Abcd</Copyright>
    </Report>

How can i fill the List from the XLinq query with each row data from the Row Node

var person = from p in XDocument.Load(@"E:\526571836.xml").Descendants("Report").Descendants("Table").Descendants("Row")
                         select new Campaign { CampaignName = p.Element("CampaignName").Attribute("value").Value };

int icnt = person.Count();//having result =  0
Jehof
  • 34,674
  • 10
  • 123
  • 155
Kamran Shahid
  • 3,954
  • 5
  • 48
  • 93

1 Answers1

0

I were able to do it via following code

XDocument doc = XDocument.Load(@"E:\526571836.xml");
            XNamespace ns = doc.Root.Name.NamespaceName;


            var campaignList = doc.Root.Element(ns + "Table").Elements(ns + "Row")
                .Select(row => new CampaignObjectFromXml()
                {
                    CampaignName = (string)row.Element(ns + "CampaignName").Attribute("value"),
                    AdGroupName = (string)row.Element(ns + "AdGroupName").Attribute("value"),
                    Keyword = (string)row.Element(ns + "Keyword").Attribute("value"),
                    Devicetype = (string)row.Element(ns + "Devicetype").Attribute("value"),
                    Clicks = (int)row.Element(ns + "Clicks").Attribute("value"),
                    Impressions = (int)row.Element(ns + "Impressions").Attribute("value"),
                    Ctr = (((string)row.Element(ns + "Ctr").Attribute("value")).Length > 0 ? (decimal?)row.Element(ns + "Ctr").Attribute("value") : null),
                    AverageCpc = (((string)row.Element(ns + "AverageCpc").Attribute("value")).Length > 0 ? (decimal?)row.Element(ns + "AverageCpc").Attribute("value") : null),
                    ConversionRate = (((string)row.Element(ns + "ConversionRate").Attribute("value")).Length > 0 ? (decimal?)row.Element(ns + "ConversionRate").Attribute("value") : null),
                    GregorianDate = XmlConvert.ToDateTime((string)row.Element(ns + "GregorianDate").Attribute("value"), @"M\/d\/yyyy")
                }).ToList();


public class CampaignObjectFromXml
    {
        public string CampaignName { get; set; }

        public string AdGroupName { get; set; }

        public string Keyword { get; set; }

        public string Devicetype { get; set; }

        public int Clicks { get; set; }

        public int Impressions { get; set; }

        public decimal? Ctr { get; set; }

        public decimal? AverageCpc { get; set; }

        public decimal? ConversionRate { get; set; }

        public DateTime GregorianDate { get; set; }
    }
Kamran Shahid
  • 3,954
  • 5
  • 48
  • 93