diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-07-01 09:19:49 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-07-01 09:19:49 (GMT) |
commit | 2da71a8a85486a494343f1662d64fb5ae5a2a44e (patch) | |
tree | 23992f9f2a00bac23b345e5c2cc9c1194efc25be /src/com/isode/stroke/parser/SerializingParser.java | |
download | stroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.zip stroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.tar.bz2 |
Initial import
Diffstat (limited to 'src/com/isode/stroke/parser/SerializingParser.java')
-rw-r--r-- | src/com/isode/stroke/parser/SerializingParser.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/com/isode/stroke/parser/SerializingParser.java b/src/com/isode/stroke/parser/SerializingParser.java new file mode 100644 index 0000000..1346dc8 --- /dev/null +++ b/src/com/isode/stroke/parser/SerializingParser.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2010, Isode Limited, London, England. + * All rights reserved. + */ +/* + * Copyright (c) 2010, Remko Tron¨on. + * All rights reserved. + */ +package com.isode.stroke.parser; + +import com.isode.stroke.serializer.xml.XMLElement; +import com.isode.stroke.serializer.xml.XMLTextNode; +import java.util.Vector; + +public class SerializingParser { + + private final Vector<XMLElement> elementStack_ = new Vector<XMLElement>(); + private XMLElement rootElement_; + + public void handleStartElement(String tag, String ns, AttributeMap attributes) { + XMLElement element = new XMLElement(tag, ns); + for (String name : attributes.keySet()) { + element.setAttribute(name, attributes.get(name)); + } + + if (elementStack_.isEmpty()) { + rootElement_ = element; + } else { + elementStack_.lastElement().addNode(element); + } + elementStack_.add(element); + } + + public void handleEndElement(String tag, String ns) { + assert (!elementStack_.isEmpty()); + elementStack_.remove(elementStack_.size() - 1); + } + + public void handleCharacterData(String data) { + if (!elementStack_.isEmpty()) { + elementStack_.lastElement().addNode(new XMLTextNode(data)); + } + } + + public String getResult() { + return (rootElement_ != null ? rootElement_.serialize() : ""); + } +} |