diff --git a/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml b/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml
index d3236a5..be3da22 100644
--- a/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml
+++ b/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml
@@ -1,2 +1,20 @@
-09/06/2013Friday, 06 September 20132013 September
\ No newline at end of file
+
+
+
+
+ 09/06/2013
+
+ Friday, 06 September 2013
+
+ 2013 September
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs b/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs
index ae83812..abda7e9 100644
--- a/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs
+++ b/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs
@@ -143,18 +143,22 @@ public static void ReplaceNewLinesWithBreaks(XElement xElem)
{
if (xElem == null) return;
- var textWithBreaks = xElem.Descendants(W.t).Where(t => t.Value.Contains("\r\n"));
- foreach (var textWithBreak in textWithBreaks)
- {
+ var textWithBreaks = xElem.Descendants(W.t).Where(t => t.Value.Contains("\n")).ToList();
+ for (var i = textWithBreaks.Count - 1; i >= 0; i--)
+ {
+ var textWithBreak = textWithBreaks[i];
var text = textWithBreak.Value;
var split = text.Replace("\r\n", "\n").Split(new[] { "\n" }, StringSplitOptions.None);
- textWithBreak.Value = string.Empty;
+
+ var parent = textWithBreak.Parent;
+ textWithBreak.Remove();
+
foreach (var s in split)
{
- textWithBreak.Add(new XElement(W.t, s));
- textWithBreak.Add(new XElement(W.br));
+ parent.Add(new XElement(W.t, s));
+ parent.Add(new XElement(W.br));
}
- textWithBreak.Descendants(W.br).Last().Remove();
+ parent.Descendants(W.br).Last().Remove();
}
}
}