aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java7
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java41
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")