/* * Copyright (c) 2010, Isode Limited, London, England. * All rights reserved. */ /* * Copyright (c) 2010, Remko Tron¨on. * All rights reserved. */ package com.isode.stroke.serializer.xml; import java.util.HashMap; import java.util.Vector; public class XMLElement implements XMLNode { private final String tag_; private final HashMap attributes_ = new HashMap(); private final Vector childNodes_ = new Vector(); public XMLElement(String tag) { this(tag, ""); } public XMLElement(String tag, String xmlns) { tag_ = tag; if (xmlns.length()!=0) { setAttribute("xmlns", xmlns); } } public XMLElement(String tag, String xmlns, String text) { this(tag, xmlns); if (text.length() > 0) { addNode(new XMLTextNode(text)); } } public String serialize() { String result = ""; result += "<" + tag_; for (String key : attributes_.keySet()) { result += " " + key + "=\"" + attributes_.get(key) + "\""; } if (childNodes_.size() > 0) { result += ">"; for (XMLNode node : childNodes_) { result += node.serialize(); } result += ""; } else { result += "/>"; } return result; } public void setAttribute(String attribute, String value) { String escapedValue = value; escapedValue.replaceAll("&", "&"); escapedValue.replaceAll("<", "<"); escapedValue.replaceAll(">", ">"); escapedValue.replaceAll("'", "'"); escapedValue.replaceAll("\"", """); attributes_.put(attribute, escapedValue); } public void addNode(XMLNode node) { childNodes_.add(node); } }