From 1408289176bc54e01f141cdb1cbfd2df80747250 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 19:54:25 +0000 Subject: Read hyperlinks with anchors --- .../java/org/zwobble/mammoth/docx/BodyXmlReader.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java') diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index 6b6fceb..dd0bf09 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -158,10 +158,18 @@ public class BodyXmlReader { } private ReadResult readHyperlink(XmlElement element) { - String relationshipId = element.getAttribute("r:id"); - return readElements(element.children()) - .map(children -> Hyperlink.href( - relationships.findRelationshipById(relationshipId).getTarget(), children)); + Optional relationshipId = element.getAttributeOrNone("r:id"); + Optional anchor = element.getAttributeOrNone("w:anchor"); + ReadResult childrenResult = readElements(element.children()); + if (relationshipId.isPresent()) { + return childrenResult.map(children -> Hyperlink.href( + relationships.findRelationshipById(relationshipId.get()).getTarget(), children)); + } else if (anchor.isPresent()) { + return childrenResult.map(children -> Hyperlink.anchor( + anchor.get(), children)); + } else { + return ReadResult.EMPTY_SUCCESS; + } } private Optional readVal(XmlElementLike element, String name) { -- cgit v1.2.3