import java.io.*; import java.util.*; import xpp.StartTag; import xpp.EndTag; import xpp.XmlPullParser; import xpp.XmlPullParserException; /******************************************************************************** * * @author Aleksander Slominski [aslom@extreme.indiana.edu] */ public class SimpleXmlPullParser implements Tester { //int count; //String elementName; public SimpleXmlPullParser() { } public void setUp(Properties props) throws Exception { } public TestResult testCount(String data, int runs, String elementName) throws Exception { //this.elementName = elementName; char[] bufElementName = elementName.toCharArray(); int bufElementNameLen = bufElementName.length; char[] buf = data.toCharArray(); //System.err.println("data = '"+data+"'"); XmlPullParser xpp = new XmlPullParser(); xpp.setMixedContent(false); xpp.setSupportNamespaces(false); Reader[] readers = new Reader[runs]; for(int i = 0; i < runs ; ++i) { readers[i] = new StringReader(data); } StartTag stag = new StartTag(); EndTag etag = new EndTag(); int count = -1; // start timing double start = TestTimer.tick(); for(int i = 0; i < runs ; ++i) { count = 0; //xpp.setInput(buf); xpp.setInput(readers[i]); byte eventType; while((eventType = xpp.next()) != XmlPullParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_TAG) { xpp.readStartTag(stag); //System.err.println(""+stag); if(elementName.equals(stag.getQName())) ++count; int nAtts = stag.getLength(); for (int n = 0; n < nAtts; n++) { String s1 = stag.getRawName(n); String s2 = stag.getValue(n); } //} else if(eventType == XmlPullParser.CONTENT) { //String s = xpp.readContent(); //System.err.println("CONTENT={'"+s+"'}"); //} else if(eventType == XmlPullParser.END_TAG) { //xpp.readEndTag(etag); //System.err.println(""+etag); } } } double end = TestTimer.tick(); TestResult result = new TestResult(); result.elementCount = count; result.timeSecs = (end - start) / runs; return result; } }