diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-11-13 21:37:50 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-11-13 21:39:16 +0000 |
| commit | 34cb98fb564d82e185103c85ead8443a7d551c6b (patch) | |
| tree | 1883ca00e04dce6b11511bdd18954ac3afa4d777 /src/main/java | |
| parent | 6f87042576150fd65db52144417d8a788f2441f4 (diff) | |
Allow default namespace when parsing XML
Diffstat (limited to 'src/main/java')
3 files changed, 33 insertions, 7 deletions
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<String> prefix; + private final String uri; + + public NamespacePrefix(Optional<String> prefix, String uri) { + this.prefix = prefix; + this.uri = uri; + } + + public Optional<String> 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<String, String> uriToPrefix = new HashMap<>(); + private final Map<String, NamespacePrefix> 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<String, String> uriToPrefix; + private final Map<String, NamespacePrefix> uriToPrefix; - public NamespacePrefixes(Map<String, String> uriToPrefix) { + public NamespacePrefixes(Map<String, NamespacePrefix> uriToPrefix) { this.uriToPrefix = uriToPrefix; } - public Optional<String> prefixForUri(String uri) { + public Optional<NamespacePrefix> 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()); } |
