diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-09-26 17:47:01 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-09-26 17:47:01 +0100 |
| commit | 53f27cf1a80151bbf06fa9e900c744f06e907f77 (patch) | |
| tree | 31d98e1edb239e49b29a326573d53aabfa03eafa /src/main/java/org | |
| parent | e0cf7240fe37c5f44b66563db29c07bc1188805b (diff) | |
Allow namespacing mapping in element names
Diffstat (limited to 'src/main/java/org')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/xml/XmlParser.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlParser.java b/src/main/java/org/zwobble/mammoth/xml/XmlParser.java index 5b26de3..064634a 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlParser.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlParser.java @@ -5,19 +5,26 @@ import java.util.Deque; import java.util.Map; import com.google.common.base.Strings; +import com.google.common.collect.BiMap; import static java.util.stream.Collectors.toMap; import lombok.val; public class XmlParser { - public static XmlElement parseString(String value) { + private final BiMap<String, String> namespaces; + + public XmlParser(BiMap<String, String> namespaces) { + this.namespaces = namespaces; + } + + public XmlElement parseString(String value) { val nodeGenerator = new NodeGenerator(); SimpleSax.parseString(value, nodeGenerator); return nodeGenerator.getRoot(); } - private static class NodeGenerator implements SimpleSaxHandler { + private class NodeGenerator implements SimpleSaxHandler { private final Deque<XmlElementBuilder> elementStack; public NodeGenerator() { @@ -43,6 +50,8 @@ public class XmlParser { private String readName(ElementName name) { if (Strings.isNullOrEmpty(name.getUri())) { return name.getLocalName(); + } else if (namespaces.containsValue(name.getUri())) { + return namespaces.inverse().get(name.getUri()) + ":" + name.getLocalName(); } else { return "{" + name.getUri() + "}" + name.getLocalName(); } |
