diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-12-31 16:08:16 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-12-31 16:08:16 +0000 |
| commit | 36deaa6002a0e85d7da6efd7e569d91f976d9949 (patch) | |
| tree | cf76ee1e00e9753e9954985afdedcd253681a550 /src/main/java/org/zwobble/mammoth/xml/SimpleSax.java | |
| parent | d91ddfe924176707062ce447722993d9d9aac415 (diff) | |
Move XML parsing code into its own package
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/xml/SimpleSax.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/xml/SimpleSax.java | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java b/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java deleted file mode 100644 index 54bd614..0000000 --- a/src/main/java/org/zwobble/mammoth/xml/SimpleSax.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.zwobble.mammoth.xml; - -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.util.Map; -import java.util.stream.IntStream; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import org.xml.sax.Attributes; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; -import org.xml.sax.helpers.DefaultHandler; - -import static java.util.stream.Collectors.toMap; - -public class SimpleSax { - public static void parseStream(InputStream input, SimpleSaxHandler handler) { - parseInputSource(new InputSource(input), handler); - } - - public static void parseString(String value, SimpleSaxHandler handler) { - parseInputSource(new InputSource(new StringReader(value)), handler); - } - - private static void parseInputSource(InputSource inputSource, SimpleSaxHandler handler) { - SAXParserFactory parserFactory = SAXParserFactory.newInstance(); - parserFactory.setNamespaceAware(true); - try { - SAXParser saxParser = parserFactory.newSAXParser(); - XMLReader xmlReader = saxParser.getXMLReader(); - xmlReader.setContentHandler(new DefaultHandler() { - @Override - public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { - ElementName name = new ElementName(uri, localName); - Map<ElementName, String> attributesMap = IntStream.range(0, attributes.getLength()) - .boxed() - .collect(toMap( - index -> new ElementName(attributes.getURI(index), attributes.getLocalName(index)), - attributes::getValue - )); - handler.startElement(name, attributesMap); - } - - @Override - public void endElement(String uri, String localName, String qName) throws SAXException { - handler.endElement(); - } - - @Override - public void characters(char[] ch, int start, int length) throws SAXException { - handler.characters(new String(ch, start, length)); - } - }); - xmlReader.parse(inputSource); - } catch (ParserConfigurationException | SAXException | IOException exception) { - throw new RuntimeException(exception); - } - } -} |
