From e78ca95a0547d089c3f873aa62c038376da8c772 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 26 Sep 2026 22:06:43 +0100 Subject: Handle paragraphs and runs that have been moved and tracked as a revision --- NEWS | 2 ++ .../org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java | 6 ++++++ src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/NEWS b/NEWS index 0c9ac0c..cb60138 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,8 @@ * Read the children of w:customXml elements. +* Handle paragraphs and runs that have been moved and tracked as a revision. + # 1.12.2 * Avoid excessive backtracking when parsing an unterminated string with many diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java index 0c37dc6..2906a09 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java @@ -157,6 +157,11 @@ class StatefulBodyXmlReader { case "w:customXml": case "w:ins": + case "w:moveFromRangeEnd": + case "w:moveFromRangeStart": + case "w:moveTo": + case "w:moveToRangeEnd": + case "w:moveToRangeStart": case "w:object": case "w:smartTag": case "w:drawing": @@ -181,6 +186,7 @@ class StatefulBodyXmlReader { case "w:footnoteRef": case "w:endnoteRef": case "w:annotationRef": + case "w:moveFrom": case "w:pPr": case "w:rPr": case "w:tblPr": diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java index 111c808..be870d6 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -2124,6 +2124,11 @@ public class BodyXmlTests { public void appropriateElementsHaveTheirChildrenReadNormally() { assertChildrenAreReadNormally("w:customXml"); assertChildrenAreReadNormally("w:ins"); + assertChildrenAreReadNormally("w:moveFromRangeEnd"); + assertChildrenAreReadNormally("w:moveFromRangeStart"); + assertChildrenAreReadNormally("w:moveTo"); + assertChildrenAreReadNormally("w:moveToRangeEnd"); + assertChildrenAreReadNormally("w:moveToRangeStart"); assertChildrenAreReadNormally("w:object"); assertChildrenAreReadNormally("w:smartTag"); assertChildrenAreReadNormally("w:drawing"); @@ -2158,6 +2163,7 @@ public class BodyXmlTests { assertIsIgnored("w:footnoteRef"); assertIsIgnored("w:endnoteRef"); assertIsIgnored("w:annotationRef"); + assertIsIgnored("w:moveFrom"); assertIsIgnored("w:pPr"); assertIsIgnored("w:rPr"); assertIsIgnored("w:tblPr"); -- cgit v1.2.3