From ba3bb715394a03ea2320cc3679881a0f1548ed99 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 2 Jan 2016 14:07:15 +0000 Subject: Parse w:t elements --- .../org/zwobble/mammoth/documents/DocumentElement.java | 4 ++++ .../java/org/zwobble/mammoth/documents/TextElement.java | 13 +++++++++++++ src/main/java/org/zwobble/mammoth/docx/BodyXml.java | 16 ++++++++++++++++ src/main/java/org/zwobble/mammoth/xml/XmlElement.java | 9 +++++++-- src/main/java/org/zwobble/mammoth/xml/XmlNode.java | 1 + src/main/java/org/zwobble/mammoth/xml/XmlNodes.java | 4 ++++ src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java | 7 ++++++- 7 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/zwobble/mammoth/documents/DocumentElement.java create mode 100644 src/main/java/org/zwobble/mammoth/documents/TextElement.java create mode 100644 src/main/java/org/zwobble/mammoth/docx/BodyXml.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/mammoth/documents/DocumentElement.java b/src/main/java/org/zwobble/mammoth/documents/DocumentElement.java new file mode 100644 index 0000000..d7b20d3 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/DocumentElement.java @@ -0,0 +1,4 @@ +package org.zwobble.mammoth.documents; + +public interface DocumentElement { +} diff --git a/src/main/java/org/zwobble/mammoth/documents/TextElement.java b/src/main/java/org/zwobble/mammoth/documents/TextElement.java new file mode 100644 index 0000000..e2e7383 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/TextElement.java @@ -0,0 +1,13 @@ +package org.zwobble.mammoth.documents; + +public class TextElement implements DocumentElement { + private final String value; + + public TextElement(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXml.java b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java new file mode 100644 index 0000000..7b3e74e --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXml.java @@ -0,0 +1,16 @@ +package org.zwobble.mammoth.docx; + +import org.zwobble.mammoth.documents.DocumentElement; +import org.zwobble.mammoth.documents.TextElement; +import org.zwobble.mammoth.xml.XmlElement; + +public class BodyXml { + public static DocumentElement readBodyXmlElement(XmlElement element) { + switch (element.getName()) { + case "w:t": + return new TextElement(element.innerText()); + default: + throw new UnsupportedOperationException(); + } + } +} diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlElement.java b/src/main/java/org/zwobble/mammoth/xml/XmlElement.java index 8c3a011..f592415 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlElement.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlElement.java @@ -1,5 +1,6 @@ package org.zwobble.mammoth.xml; +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -7,8 +8,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import static com.google.common.collect.Iterables.filter; -import static com.google.common.collect.Iterables.getFirst; +import static com.google.common.collect.Iterables.*; public class XmlElement implements XmlNode, XmlElementLike { public XmlElement(String name) { @@ -51,6 +51,11 @@ public class XmlElement implements XmlNode, XmlElementLike { return children; } + @Override + public String innerText() { + return Joiner.on("").join(transform(children, XmlNode::innerText)); + } + @Override public T accept(XmlNodeVisitor visitor) { return visitor.visit(this); diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlNode.java b/src/main/java/org/zwobble/mammoth/xml/XmlNode.java index 37ce2cf..be8e48b 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlNode.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlNode.java @@ -1,5 +1,6 @@ package org.zwobble.mammoth.xml; public interface XmlNode { + String innerText(); T accept(XmlNodeVisitor visitor); } diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlNodes.java b/src/main/java/org/zwobble/mammoth/xml/XmlNodes.java index ce36615..d168fa6 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlNodes.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlNodes.java @@ -22,4 +22,8 @@ public class XmlNodes { public static XmlElement element(String name, Map attributes, List children) { return new XmlElement(name, attributes, children); } + + public static XmlTextNode text(String value) { + return new XmlTextNode(value); + } } diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java b/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java index 9b349e3..453863d 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlTextNode.java @@ -10,7 +10,12 @@ public class XmlTextNode implements XmlNode { public String getValue() { return value; } - + + @Override + public String innerText() { + return value; + } + @Override public T accept(XmlNodeVisitor visitor) { return visitor.visit(this); -- cgit v1.2.3