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/xml/ElementName.java1
-rw-r--r--src/main/java/org/zwobble/mammoth/xml/SimpleSax.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/xml/XmlParser.java15
3 files changed, 16 insertions, 4 deletions
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) {