diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java | 7 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 41 |
2 files changed, 48 insertions, 0 deletions
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 30579ff..76d01b9 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java @@ -562,6 +562,13 @@ class StatefulBodyXmlReader { private ReadResult readTableRow(XmlElement element) { XmlElementLike properties = element.findChildOrEmpty("w:trPr"); + + // See 17.13.5.12 del (Deleted Table Row) of ECMA-376 4th edition Part 1 + boolean deleted = properties.hasChild("w:del"); + if (deleted) { + return ReadResult.EMPTY_SUCCESS; + } + boolean isHeader = properties.hasChild("w:tblHeader"); return readElements(element.getChildren()) .map(children -> list(new TableRow(children, isHeader))); 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 a4b3bdd..2c8c96c 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -1489,6 +1489,47 @@ public class BodyXmlTests { } @Test + public void whenRowIsMarkedAsDeletedInRowPropertiesThenRowIsIgnored() { + XmlElement element = element("w:tbl", list( + element("w:tr", list( + element("w:tc", list( + element("w:p", list( + runXml("Row 1") + )) + )) + )), + + element("w:tr", list( + element("w:trPr", list( + element("w:del") + )), + element("w:tc", list( + element("w:p", list( + runXml("Row 2") + )) + )) + )) + )); + + DocumentElement result = readSuccess(bodyReader(), element); + + assertThat( + result, + deepEquals(table(list( + tableRow(list( + tableCell( + withChildren( + paragraph(withChildren( + runWithText("Row 1") + )) + ) + ) + )) + ))) + ); + } + + @Test public void warningIfNonRowInTable() { XmlElement element = element("w:tbl", list( element("w:p") |
