From 34cb98fb564d82e185103c85ead8443a7d551c6b Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 13 Nov 2016 21:37:50 +0000 Subject: Allow default namespace when parsing XML --- .../mammoth/internal/xml/NamespacePrefix.java | 21 +++++++++++++++++++++ .../mammoth/internal/xml/NamespacePrefixes.java | 15 ++++++++++----- .../mammoth/internal/xml/parsing/XmlParser.java | 4 ++-- 3 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefix.java (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefix.java b/src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefix.java new file mode 100644 index 0000000..2e0c96f --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefix.java @@ -0,0 +1,21 @@ +package org.zwobble.mammoth.internal.xml; + +import java.util.Optional; + +public class NamespacePrefix { + private final Optional prefix; + private final String uri; + + public NamespacePrefix(Optional prefix, String uri) { + this.prefix = prefix; + this.uri = uri; + } + + public Optional getPrefix() { + return prefix; + } + + public String getUri() { + return uri; + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefixes.java b/src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefixes.java index 2287723..44e5676 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefixes.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefixes.java @@ -12,10 +12,15 @@ public class NamespacePrefixes { } public static class Builder { - private final Map uriToPrefix = new HashMap<>(); + private final Map uriToPrefix = new HashMap<>(); public Builder put(String prefix, String uri) { - uriToPrefix.put(uri, prefix); + uriToPrefix.put(uri, new NamespacePrefix(Optional.of(prefix), uri)); + return this; + } + + public Builder defaultPrefix(String uri) { + uriToPrefix.put(uri, new NamespacePrefix(Optional.empty(), uri)); return this; } @@ -24,13 +29,13 @@ public class NamespacePrefixes { } } - private final Map uriToPrefix; + private final Map uriToPrefix; - public NamespacePrefixes(Map uriToPrefix) { + public NamespacePrefixes(Map uriToPrefix) { this.uriToPrefix = uriToPrefix; } - public Optional prefixForUri(String uri) { + public Optional lookupUri(String uri) { return lookup(uriToPrefix, uri); } } diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java b/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java index c76e989..83e9a1b 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java @@ -53,8 +53,8 @@ public class XmlParser { if (isNullOrEmpty(name.getUri())) { return name.getLocalName(); } else { - return namespaces.prefixForUri(name.getUri()) - .map(prefix -> prefix + ":" + name.getLocalName()) + return namespaces.lookupUri(name.getUri()) + .map(namespace -> namespace.getPrefix().map(prefix -> prefix + ":").orElse("") + name.getLocalName()) .orElseGet(() -> "{" + name.getUri() + "}" + name.getLocalName()); } -- cgit v1.2.3