public XElement GetMetaFieldValueElement(Field field) { XElement metaField = new XElement( "MetaField", new XElement("Name", _mappingHelper.GetEpiserverFieldName(field.FieldType)), new XElement("Type", _mappingHelper.GetEpiserverDataType(field.FieldType)) ); if (field.FieldType.DataType.Equals(DataType.LocaleString)) { var ls = field.Data as LocaleString; if (!field.IsEmpty()) { foreach (var culturePair in _config.LanguageMapping) { if (ls != null) { metaField.Add( new XElement("Data", new XAttribute("language", culturePair.Key.Name.ToLower()), new XAttribute("value", ls[culturePair.Value] ?? string.Empty))); } } } else { foreach (var culturePair in _config.LanguageMapping) { metaField.Add(new XElement("Data", new XAttribute("language", culturePair.Key.Name.ToLower()), new XAttribute("value", string.Empty))); } } } else if (field.FieldType.DataType.Equals(DataType.CVL)) { var cvlDataElement = _pimFieldAdapter.GetCVLValues(field); metaField.Add(cvlDataElement); } else { metaField.Add( new XElement("Data", new XAttribute("language", _config.ChannelDefaultLanguage.Name.ToLower()), new XAttribute("value", _pimFieldAdapter.GetFlatFieldData(field)))); } return(metaField); }