aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 19:48:59 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 19:48:59 +0000
commitf63e7014a68c90160da89a25db613381edbc6e5e (patch)
treed4e18df804a6dc5e42a9c65d7d2d0940abef4d0e /src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
parent7864626f385e23272bf307474ceaebe281b4ed28 (diff)
Read hyperlinks with href
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java14
1 files changed, 13 insertions, 1 deletions
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<String> readVal(XmlElementLike element, String name) {
return element.findChildOrEmpty(name).getAttributeOrNone("w:val");
}