From f63e7014a68c90160da89a25db613381edbc6e5e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 19:48:59 +0000 Subject: Read hyperlinks with href --- src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (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 dcef0c5..6b6fceb 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -20,10 +20,12 @@ import static org.zwobble.mammoth.util.MammothLists.list; public class BodyXmlReader { private final Styles styles; private final Numbering numbering; + private final Relationships relationships; - public BodyXmlReader(Styles styles, Numbering numbering) { + public BodyXmlReader(Styles styles, Numbering numbering, Relationships relationships) { this.styles = styles; this.numbering = numbering; + this.relationships = relationships; } public ReadResult readElement(XmlElement element) { @@ -54,6 +56,9 @@ public class BodyXmlReader { case "w:txbxContent": return readElements(element.children()); + case "w:hyperlink": + return readHyperlink(element); + case "w:pPr": return EMPTY_SUCCESS; @@ -152,6 +157,13 @@ public class BodyXmlReader { numbering::findLevel); } + private ReadResult readHyperlink(XmlElement element) { + String relationshipId = element.getAttribute("r:id"); + return readElements(element.children()) + .map(children -> Hyperlink.href( + relationships.findRelationshipById(relationshipId).getTarget(), children)); + } + private Optional readVal(XmlElementLike element, String name) { return element.findChildOrEmpty(name).getAttributeOrNone("w:val"); } -- cgit v1.2.3