summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-06-20 19:43:33 +0100
committerMichael Williamson <mike@zwobble.org>2016-06-20 19:43:33 +0100
commita08807e17eede2a8a875d8bbf6290903eae7879a (patch)
treeb6c3891aa3f833b24b8a30c917d955249b38f20b /src
parentcffffaa33a22fcb8abb0d98cd6fce1e1be6cdb73 (diff)
Add support for w:sdt elements
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java7
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java10
2 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
index ac7521f..03eb668 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
@@ -90,6 +90,9 @@ public class BodyXmlReader {
case "wp:anchor":
return readInline(element);
+ case "w:sdt":
+ return readSdt(element);
+
case "w:ins":
case "w:smartTag":
case "w:drawing":
@@ -418,6 +421,10 @@ public class BodyXmlReader {
}
}
+ private ReadResult readSdt(XmlElement element) {
+ return readElements(element.findChildOrEmpty("w:sdtContent").getChildren());
+ }
+
private String relationshipIdToDocxPath(String relationshipId) {
Relationship relationship = relationships.findRelationshipById(relationshipId);
return "word/" + trimLeft(relationship.getTarget(), '/');
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 f67560c..91e6d43 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -33,6 +33,7 @@ import static org.zwobble.mammoth.internal.xml.XmlNodes.element;
import static org.zwobble.mammoth.tests.DeepReflectionMatcher.deepEquals;
import static org.zwobble.mammoth.tests.ResultMatchers.hasWarnings;
import static org.zwobble.mammoth.tests.ResultMatchers.isInternalResult;
+import static org.zwobble.mammoth.tests.ResultMatchers.isInternalSuccess;
import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.*;
import static org.zwobble.mammoth.tests.docx.BodyXmlReaderMakers.*;
import static org.zwobble.mammoth.tests.docx.BodyXmlReaderMakers.NUMBERING;
@@ -664,6 +665,15 @@ public class BodyXmlTests {
}
@Test
+ public void sdtIsReadUsingSdtContent() throws IOException {
+ XmlElement element = element("w:sdt", list(element("w:sdtContent", list(textXml("Blackdown")))));
+
+ assertThat(
+ readAll(a(bodyReader), element),
+ isInternalSuccess(deepEquals(list(text("Blackdown")))));
+ }
+
+ @Test
public void appropriateElementsHaveTheirChildrenReadNormally() {
assertChildrenAreReadNormally("w:ins");
assertChildrenAreReadNormally("w:smartTag");