diff options
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java | 23 |
1 files changed, 19 insertions, 4 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 cdbc96a..4962400 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java @@ -257,12 +257,16 @@ class StatefulBodyXmlReader { private boolean readBooleanElement(XmlElementLike properties, String tagName) { return properties.findChild(tagName) - .map(child -> child.getAttributeOrNone("w:val") - .map(value -> !value.equals("false") && !value.equals("0")) - .orElse(true)) + .map(child -> readBooleanAttributeValue(child.getAttributeOrNone("w:val"))) .orElse(false); } + private boolean readBooleanAttributeValue(Optional<String> valAttributeValue) { + return valAttributeValue + .map(value -> !value.equals("false") && !value.equals("0")) + .orElse(true); + } + private VerticalAlignment readVerticalAlignment(XmlElementLike properties) { String verticalAlignment = readVal(properties, "w:vertAlign").orElse(""); switch (verticalAlignment) { @@ -697,7 +701,18 @@ class StatefulBodyXmlReader { } private ReadResult readSdt(XmlElement element) { - return readElements(element.findChildOrEmpty("w:sdtContent").getChildren()); + Optional<XmlElement> checkbox = element + .findChildOrEmpty("w:sdtPr") + .findChild("wordml:checkbox"); + + if (checkbox.isPresent()) { + Optional<XmlElement> checkedElement = checkbox.get().findChild("wordml:checked"); + boolean isChecked = checkedElement.isPresent() && + readBooleanAttributeValue(checkedElement.get().getAttributeOrNone("wordml:val")); + return success(new Checkbox(isChecked)); + } else { + return readElements(element.findChildOrEmpty("w:sdtContent").getChildren()); + } } private String relationshipIdToDocxPath(String relationshipId) { |
