package org.teiid.embedded.samples.util; import static javax.xml.stream.XMLStreamConstants.END_DOCUMENT; import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.transform.stax.StAXSource; public class Util { public static StAXSource formStAXSource(String xml) throws XMLStreamException { XMLInputFactory factory = XMLInputFactory.newInstance(); StAXSource source = new StAXSource(factory.createXMLStreamReader(new ByteArrayInputStream(xml.getBytes()))); return source; } public static List<String> parse(XMLStreamReader reader, String... elementNames) throws XMLStreamException { Set<String> set = new HashSet<>(); for(String name : elementNames){ set.add(name); } List<String> stateNames = new ArrayList<String>(); while (true) { if (reader.getEventType() == END_DOCUMENT) { break; } if (reader.getEventType() == START_ELEMENT) { String cursor = reader.getLocalName(); if (set.contains(cursor)) { reader.next(); String value = reader.getText(); stateNames.add(value); } } reader.next(); } return stateNames; } }