Skip to content

Instantly share code, notes, and snippets.

@tucaz
Created February 12, 2011 03:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tucaz/823447 to your computer and use it in GitHub Desktop.
Save tucaz/823447 to your computer and use it in GitHub Desktop.
public class ProductDetailTranslator
{
public ProductDetail Translate(string xmlFrom)
{
var productTo = new ProductDetail();
var xmlReader = XmlReader.Create(new StringReader(xmlFrom));
var productDetail = XElement.Load(xmlReader);
var parentGroups = productDetail.Elements("Grouping").First().Elements("section")
.Select(parentGroup => new Group() { Name = parentGroup.Elements("displayname").First().Value, Items = GetChildren(parentGroup).ToList() });
productTo.Groups.AddRange(parentGroups);
return productTo;
}
private IEnumerable<GroupItem> GetChildren(XElement parentGroup)
{
var groups = parentGroup.Elements("groups").First().Elements("group")
.Select(group => new GroupItem() { IsParent = true, Name = group.Elements("displayname").First().Value, Children = GetAttributes(group).ToList() });
return groups;
}
private IEnumerable<GroupItem> GetAttributes(XElement group)
{
var attributes = group.Elements("attributes").First().Elements("attribute")
.Select(attr => new GroupItem() { IsParent = false, Name = attr.Elements("displayname").First().Value });
return attributes;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment