using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public static void Main()
XElement xSourceRecord= XElement.Parse(@"<record>
<field name=""style_name"">
<value currency=""AUD"">249.00</value>
<value>Specsavers</value>
<field name=""style_number"">
<field name=""materials"">
<field name=""frame_type"">
<field name=""release_date"">
<value>22/07/2013</value>
<field name=""frame_gender"">
<price ref=""AUD"">249.00</price>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-angled-130x73.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-case-130x73.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-front-130x73.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-ortho-130x73.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-side-130x73.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-angled-200x113.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-case-200x113.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-front-200x113.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-ortho-200x113.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-side-200x113.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-angled-320x180.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-case-320x180.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-front-320x180.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-ortho-320x180.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-side-320x180.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-angled-640x360.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-case-640x360.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-front-640x360.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-ortho-640x360.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-side-640x360.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-angled-940x529.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-case-940x529.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-front-940x529.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-ortho-940x529.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-side-940x529.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-angled-2000x1125.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-case-2000x1125.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-front-2000x1125.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-ortho-2000x1125.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/images.specsavers.com/glasses-images/21000461-side-2000x1125.jpg</value>
<value>https://s3-eu-west-1.amazonaws.com/video.specsavers.com/Frames/21000461.mp4</value>
<field name=""bridge_width"">
<field name=""lens_suitability"">
<value>Single vision</value>
<value>Multifocals</value>
<field name=""lens_width"">
<field name=""lens_depth"">
<field name=""arm_length"">
<field name=""frame_pd"">
<field name=""frame_compatibility"">
<value>ophthalmic</value>
<field name=""materials"">
<field name=""release_date"">
<value>22/07/2013</value>
<category uniqueid=""frame_category18"">Timeless</category>
<category uniqueid=""frame_category19"">Men's Glasses</category>
<category uniqueid=""frame_gender20"">Male</category>
XElement xTransformedElementFields = new XElement("fields");
var xAttributeElements = from attributeElement in xSourceRecord.Element("fields").Elements("field")
where attributeElement.Attributes("name").Any(a => !string.IsNullOrEmpty(a.Value)) &&
attributeElement.Elements("attributes").Any(ats => ats.Elements("attribute").Any(a => a.Elements("value").Any(v => !string.IsNullOrEmpty(v.Value))))
foreach (XElement xItem in xSourceRecord.Element("fields").Elements("field"))
switch (xItem.Attribute("name").Value.ToLower())
xTransformedElementFields.Add(xItem);
List<string> validImg = new List<string>(){"front-940x529.jpg","side-940x529.jpg","front-320x180.jpg","side-320x180.jpg"};
if (xAttributeElements.Any())
foreach (var xItem in xAttributeElements)
switch (xItem.Attribute("name").Value.ToLower())
switch (xItem.Attribute("name").Value.ToLower())
switch (xItem.Attribute("name").Value.ToLower())
if (xItem.Descendants("field").Any(f => f.Attributes("name").Any(n => n.Value.ToLower() == "images") && f.Descendants("value").Any(v => !string.IsNullOrEmpty(v.Value))))
foreach(var x in xItem.Descendants("field").Where(f => f.Attributes("name").Any(n => n.Value.ToLower() == "images")).Descendants("value"))
xTransformedElementFields.Add(xItem);