InfoXMLHandler.java
package gov.usgs.earthquake.shakemap;
import gov.usgs.util.XmlUtils;
import java.util.HashMap;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
/**
* Parser for ShakeMap info.xml metadata.
*/
public class InfoXMLHandler extends DefaultHandler {
private static final String XML_TAG = "tag";
private static final String XML_NAME = "name";
private static final String XML_VALUE = "value";
private HashMap<String, String> info = new HashMap<String, String>();
/**
* Construct a new SAX Handler for an info.xml document.
*/
public InfoXMLHandler() {
}
/**
* @param in
* - the file or stream to parse
* @return the ShakeMap associated with this XML handler
* @throws Exception if error occurs
*/
public HashMap<String, String> parse(final Object in) throws Exception {
XmlUtils.parse(in, this);
return this.info;
}
/**
* @return the parsed info.
*/
public HashMap<String, String> getInfo() {
return this.info;
}
/**
* @param uri
* - the uri for this element
* @param localName
* - the local name for this element
* @param qName
* - the fully-qualified name for this element
* @param attributes
* - the attributes of the element
*/
public final void startElement(final String uri, final String localName,
final String qName, final Attributes attributes) {
if (localName.equals(XML_TAG)) {
info.put(attributes.getValue(XML_NAME),
attributes.getValue(XML_VALUE));
}
}
}