aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefix.java21
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/xml/NamespacePrefixes.java15
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java4
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());
}