From b407cc0db579ccf96a023e7cafd2672f507a1b89 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 26 Sep 2015 17:38:41 +0100 Subject: Generate names including URI in braces --- src/main/java/org/zwobble/mammoth/xml/ElementName.java | 1 + src/main/java/org/zwobble/mammoth/xml/SimpleSax.java | 4 ++-- src/main/java/org/zwobble/mammoth/xml/XmlParser.java | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/mammoth/xml/ElementName.java b/src/main/java/org/zwobble/mammoth/xml/ElementName.java index 1d70c36..9e51e0c 100644 --- a/src/main/java/org/zwobble/mammoth/xml/ElementName.java +++ b/src/main/java/org/zwobble/mammoth/xml/ElementName.java @@ -4,5 +4,6 @@ import lombok.Value; @Value public class ElementName { + private String uri; private String localName; } diff --git a/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java b/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java index 8165552..d69d00a 100644 --- a/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java +++ b/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java @@ -26,11 +26,11 @@ public class SimpleSax { xmlReader.setContentHandler(new DefaultHandler() { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { - final ElementName name = new ElementName(localName); + final ElementName name = new ElementName(uri, localName); val attributesMap = IntStream.range(0, attributes.getLength()) .boxed() .collect(toMap( - index -> new ElementName(attributes.getLocalName(index)), + index -> new ElementName(attributes.getURI(index), attributes.getLocalName(index)), attributes::getValue )); handler.startElement(name, attributesMap); diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlParser.java b/src/main/java/org/zwobble/mammoth/xml/XmlParser.java index 360c174..5b26de3 100644 --- a/src/main/java/org/zwobble/mammoth/xml/XmlParser.java +++ b/src/main/java/org/zwobble/mammoth/xml/XmlParser.java @@ -4,6 +4,8 @@ import java.util.ArrayDeque; import java.util.Deque; import java.util.Map; +import com.google.common.base.Strings; + import static java.util.stream.Collectors.toMap; import lombok.val; @@ -32,12 +34,21 @@ public class XmlParser { .entrySet() .stream() .collect(toMap( - entry -> entry.getKey().getLocalName(), + entry -> readName(entry.getKey()), entry -> entry.getValue())); - val element = new XmlElementBuilder(name.getLocalName(), simpleAttributes); + val element = new XmlElementBuilder(readName(name), simpleAttributes); elementStack.add(element); } + private String readName(ElementName name) { + if (Strings.isNullOrEmpty(name.getUri())) { + return name.getLocalName(); + } else { + return "{" + name.getUri() + "}" + name.getLocalName(); + } + + } + @Override public void endElement() { if (elementStack.size() > 1) { -- cgit v1.2.3