private void EditResource(Resource resource, ResourceContentBuilder builder) { // load resource xml from repository var xDoc = new XmlDocument(); using var resStream = resource.Binary.GetStream(); xDoc.Load(resStream); foreach (var classBuilder in builder.Classes) { // load or create the class element var resClassElement = LoadOrAddElement(xDoc.DocumentElement, $"ResourceClass[@name='{classBuilder.ClassName}']", "ResourceClass", new Dictionary <string, string> { { "name", classBuilder.ClassName } }, @"<Languages></Languages>"); foreach (var cultureBuilder in classBuilder.Cultures) { foreach (var resourceItem in cultureBuilder.Resources) { // main operation: add or modify xml elements for one resource AddOrEditResource(resClassElement, cultureBuilder.CultureName, resourceItem.Key, resourceItem.Value); } } } // save the resource content using var modifiedStream = RepositoryTools.GetStreamFromString(xDoc.OuterXml); resource.Binary.SetStream(modifiedStream); resource.Save(SavingMode.KeepVersion); }
public IResourceContentBuilder Content(string contentName) { if (string.IsNullOrEmpty(contentName)) { throw new ArgumentNullException(nameof(contentName)); } var rcb = ResourceContentBuilders.FirstOrDefault(res => res.ContentName == contentName); if (rcb != null) { return(rcb); } rcb = new ResourceContentBuilder(contentName); ResourceContentBuilders.Add(rcb); return(rcb); }
internal ResourceClassBuilder(ResourceContentBuilder contentBuilder, string className) { ContentBuilder = contentBuilder; ClassName = className; }