private static void CopyInTransUnit(SliceInfo sliceInfo, object transUnit) { var transUnitID = ((XmlElement)transUnit).Attributes["id"].Value; if (sliceInfo.Segments.All(seg => seg.Key != transUnitID)) { return; } var segDefs = ((XmlElement)transUnit).GetElementsByTagName("sdl:seg-defs"); foreach (var segDef in segDefs.OfType <XmlElement>()) { var segments = segDef.GetElementsByTagName("sdl:seg"); foreach (var segment in segments.OfType <XmlElement>()) { var segmentId = segment.Attributes["id"].Value; if (!sliceInfo.Segments.Any(seg => seg.Key == transUnitID && seg.Value.Contains(segmentId))) { continue; } segment.RemoveAllAttributes(); segment.SetAttribute("id", segmentId); segment.SetAttribute("origin", "source"); } } var target = ((XmlElement)transUnit).ChildNodes.OfType <XmlElement>().FirstOrDefault(t => t.Name == "target"); var segSource = ((XmlElement)transUnit).ChildNodes.OfType <XmlElement>().FirstOrDefault(t => t.Name == "seg-source"); if (target != null && segSource != null) { var currentTransUnitSliceInfo = sliceInfo.Segments.FirstOrDefault(seg => seg.Key == transUnitID); if (currentTransUnitSliceInfo.Value != null) { foreach (var segmentId in currentTransUnitSliceInfo.Value) { var sourceSegment = segSource.GetElementsByTagName("mrk").OfType <XmlElement>().FirstOrDefault(seg => seg.GetAttribute("mid") == segmentId); var targetSegment = target.GetElementsByTagName("mrk").OfType <XmlElement>().FirstOrDefault(seg => seg.GetAttribute("mid") == segmentId); if (sourceSegment != null && targetSegment != null) { targetSegment.InnerXml = sourceSegment.InnerXml; } } } } }
private static void ClearInTransUnit(SliceInfo sliceInfo, object transUnit) { String transUnitID = String.Empty; transUnitID = ((XmlElement)transUnit).Attributes["id"].Value; if (sliceInfo.Segments.All(seg => seg.Key != transUnitID)) { return; } XmlNodeList segDefs = ((XmlElement)transUnit).GetElementsByTagName("sdl:seg-defs"); foreach (var segDef in segDefs.OfType <XmlElement>()) { XmlNodeList segments = ((XmlElement)segDef).GetElementsByTagName("sdl:seg"); foreach (XmlElement segment in segments.OfType <XmlElement>()) { String SegmentId = String.Empty; SegmentId = segment.Attributes["id"].Value; if ( !sliceInfo.Segments.Any( seg => seg.Key == transUnitID && seg.Value.Contains(SegmentId))) { continue; } segment.RemoveAllAttributes(); segment.RemoveAll(); segment.SetAttribute("id", SegmentId); } segments = null; } segDefs = null; KeyValuePair <String, List <String> > currentTransUnit = sliceInfo.Segments.FirstOrDefault(seg => seg.Key == transUnitID); XmlNodeList target = ((XmlElement)transUnit).GetElementsByTagName("target"); if (target.Count > 0) { ClearAllChildsInnerText((XmlElement)target[0], currentTransUnit.Value); } target = null; }
private static void ClearInTransUnit(SliceInfo sliceInfo, object transUnit) { var transUnitID = ((XmlElement)transUnit).Attributes["id"].Value; if (sliceInfo.Segments.All(seg => seg.Key != transUnitID)) { return; } var segDefs = ((XmlElement)transUnit).GetElementsByTagName("sdl:seg-defs"); foreach (var segDef in segDefs.OfType <XmlElement>()) { var segments = segDef.GetElementsByTagName("sdl:seg"); foreach (var segment in segments.OfType <XmlElement>()) { var segmentId = segment.Attributes["id"].Value; if (!sliceInfo.Segments.Any(seg => seg.Key == transUnitID && seg.Value.Contains(segmentId))) { continue; } segment.RemoveAllAttributes(); segment.RemoveAll(); segment.SetAttribute("id", segmentId); } } var currentTransUnit = sliceInfo.Segments.FirstOrDefault(seg => seg.Key == transUnitID); var target = ((XmlElement)transUnit).GetElementsByTagName("target"); if (target.Count > 0) { ClearAllChildsInnerText((XmlElement)target[0], currentTransUnit.Value); } }
public static void CopyFile(SliceInfo sliceInfo, SDLXLIFFSliceOrChange form) { try { String file = sliceInfo.File; XmlDocument xDoc = new XmlDocument(); xDoc.PreserveWhitespace = true; xDoc.Load(file); String xmlEncoding = "utf-8"; try { if (xDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration) { // Get the encoding declaration. XmlDeclaration decl = (XmlDeclaration)xDoc.FirstChild; xmlEncoding = decl.Encoding; } } catch (Exception ex) { logger.Error(ex.Message, ex); } XmlNodeList fileList = xDoc.DocumentElement.GetElementsByTagName("file"); foreach (XmlElement fileElement in fileList.OfType <XmlElement>()) { XmlElement bodyElement = (XmlElement)(fileElement.GetElementsByTagName("body")[0]); XmlNodeList groupElements = bodyElement.GetElementsByTagName("group"); foreach (var groupElement in groupElements.OfType <XmlElement>()) { //look in segments XmlNodeList transUnits = ((XmlElement)groupElement).GetElementsByTagName("trans-unit"); foreach (var transUnit in transUnits.OfType <XmlElement>()) { CopyInTransUnit(sliceInfo, transUnit); } transUnits = null; } //look in segments XmlNodeList transUnitsInBody = ((XmlElement)bodyElement).ChildNodes; //.GetElementsByTagName("trans-unit"); foreach (var transUnit in transUnitsInBody.OfType <XmlElement>()) { if (((XmlNode)transUnit).Name != "trans-unit") { continue; } CopyInTransUnit(sliceInfo, transUnit); } transUnitsInBody = null; bodyElement = null; groupElements = null; } fileList = null; Encoding encoding = new UTF8Encoding(); if (!String.IsNullOrEmpty(xmlEncoding)) { encoding = Encoding.GetEncoding(xmlEncoding); } using (var writer = new XmlTextWriter(file, encoding)) { //writer.Formatting = Formatting.None; xDoc.Save(writer); } xDoc = null; form.StepProcess("Source segments from file: " + Path.GetFileName(sliceInfo.File) + " are copied."); } catch (Exception ex) { logger.Error(ex.Message, ex); } }
public static void CopyFile(SliceInfo sliceInfo, SDLXLIFFSliceOrChange form) { try { var file = sliceInfo.File; var xDoc = new XmlDocument { PreserveWhitespace = true }; xDoc.Load(file); var xmlEncoding = "utf-8"; if (xDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration) { // Get the encoding declaration. var decl = (XmlDeclaration)xDoc.FirstChild; xmlEncoding = decl.Encoding; } var fileList = xDoc.DocumentElement?.GetElementsByTagName("file"); if (fileList != null) { foreach (var fileElement in fileList.OfType <XmlElement>()) { var bodyElement = (XmlElement)(fileElement.GetElementsByTagName("body")[0]); var groupElements = bodyElement.GetElementsByTagName("group"); foreach (var groupElement in groupElements.OfType <XmlElement>()) { //look in segments var transUnits = groupElement.GetElementsByTagName("trans-unit"); foreach (var transUnit in transUnits.OfType <XmlElement>()) { CopyInTransUnit(sliceInfo, transUnit); } } //look in segments var transUnitsInBody = bodyElement.ChildNodes; foreach (var transUnit in transUnitsInBody.OfType <XmlElement>()) { if (transUnit.Name != "trans-unit") { continue; } CopyInTransUnit(sliceInfo, transUnit); } } } Encoding encoding = new UTF8Encoding(); if (!string.IsNullOrEmpty(xmlEncoding)) { encoding = Encoding.GetEncoding(xmlEncoding); } using (var writer = new XmlTextWriter(file, encoding)) { xDoc.Save(writer); } form.StepProcess("Source segments from file: " + Path.GetFileName(sliceInfo.File) + " are copied."); } catch (Exception ex) { _logger.Error($"{MethodBase.GetCurrentMethod().Name} \n {ex}"); } }