package test.junitreports; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import java.util.Arrays; import java.util.List; import java.util.Stack; public class TestSuiteHandler extends DefaultHandler { private static List<String> tags = Arrays.asList("error", "skipped", "ignored", "failure"); private Testsuite testsuite = new Testsuite(); private Stack<String> elementStack = new Stack(); private Stack<Testcase> testcaseStack = new Stack<>(); @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { this.elementStack.push(qName); if ("testsuite".equals(qName)) { if (attributes != null) { testsuite.init(attributes); } } if ("testcase".equals(qName)) { Testcase testcase = new Testcase(); if (attributes != null) { testcase.init(attributes); } testcaseStack.push(testcase); } if (tags.contains(qName)) { Testcase testcase = testcaseStack.pop(); String innerTag = qName; testcase.setInnerTagType(innerTag); testcaseStack.push(testcase); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { elementStack.pop(); if ("testcase".equals(qName)) { Testcase testcase = testcaseStack.pop(); testsuite.addTestcase(testcase); } } public Testsuite getTestsuite() { return testsuite; } }