protected XElement[] GetTargetStructureForSubstructureChange(TargetDocument targetDocument, Saetning saetning) { var targetStructure = saetning.GetAncestorsAndSelf.FirstOrDefault(e => e.IsStructureElement); var structureElementsFound = FindStructureElementsInTargetDocument(targetDocument, targetStructure).ToArray(); return(structureElementsFound); }
private static void DoSubStructureInsertAfter(XElement[] structureElementsFound, Saetning saetning, IEnumerable <XElement> aendringAktionChange) { foreach (var xElement in structureElementsFound) { var punktumPerCharMap = xElement.Descendants("Char") .Select(charElement => new { Char = charElement, NumberOfPunktum = charElement.Value.Count(c => c == '.') }); int acc = 0; XElement targetChar = null; using (var enumerator = punktumPerCharMap.GetEnumerator()) { while (acc <= saetning.NummerStrong && enumerator.MoveNext()) { acc = acc + enumerator.Current.NumberOfPunktum; targetChar = enumerator.Current.Char; } } if (targetChar == null) { throw new ApplyAendringerException("No char elemenet is found. Something is wrong."); } var targetLinea = targetChar.Parent; targetLinea.AddAfterSelf(aendringAktionChange.Descendants("Linea")); } }