From 13a08b04b74065a2e2ba8e9b0beb3882d03735ca Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 20:59:34 +0000 Subject: Read bookmarks --- src/main/java/org/zwobble/mammoth/Mammoth.java | 5 +++++ .../java/org/zwobble/mammoth/documents/Bookmark.java | 14 ++++++++++++++ .../mammoth/documents/DocumentElementVisitor.java | 1 + .../java/org/zwobble/mammoth/docx/BodyXmlReader.java | 18 +++++++++++++++--- 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/zwobble/mammoth/documents/Bookmark.java (limited to 'src/main') diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java index caf668f..9991266 100644 --- a/src/main/java/org/zwobble/mammoth/Mammoth.java +++ b/src/main/java/org/zwobble/mammoth/Mammoth.java @@ -89,6 +89,11 @@ public class Mammoth { public String visit(Hyperlink hyperlink) { throw new UnsupportedOperationException(); } + + @Override + public String visit(Bookmark bookmark) { + throw new UnsupportedOperationException(); + } }); } } diff --git a/src/main/java/org/zwobble/mammoth/documents/Bookmark.java b/src/main/java/org/zwobble/mammoth/documents/Bookmark.java new file mode 100644 index 0000000..598e83a --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/Bookmark.java @@ -0,0 +1,14 @@ +package org.zwobble.mammoth.documents; + +public class Bookmark implements DocumentElement { + private final String name; + + public Bookmark(String name) { + this.name = name; + } + + @Override + public T accept(DocumentElementVisitor visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java index 564bacb..84fccc2 100644 --- a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java +++ b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java @@ -12,4 +12,5 @@ public interface DocumentElementVisitor { T visit(TableCell tableCell); T visit(Hyperlink hyperlink); + T visit(Bookmark bookmark); } diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index e283a9c..fd32aae 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -47,6 +47,12 @@ public class BodyXmlReader { case "w:tc": return readElements(element.children()).map(TableCell::new); + case "w:hyperlink": + return readHyperlink(element); + + case "w:bookmarkStart": + return readBookmark(element); + case "w:ins": case "w:smartTag": case "w:drawing": @@ -56,9 +62,6 @@ public class BodyXmlReader { case "w:txbxContent": return readElements(element.children()); - case "w:hyperlink": - return readHyperlink(element); - case "w:pPr": return EMPTY_SUCCESS; @@ -172,6 +175,15 @@ public class BodyXmlReader { } } + private ReadResult readBookmark(XmlElement element) { + String name = element.getAttribute("w:name"); + if (name.equals("_GoBack")) { + return ReadResult.EMPTY_SUCCESS; + } else { + return success(new Bookmark(name)); + } + } + private Optional readVal(XmlElementLike element, String name) { return element.findChildOrEmpty(name).getAttributeOrNone("w:val"); } -- cgit v1.2.3