static void compareXmlTwoFiles(Reader rr, Reader rq) throws XmlPullParserException, IOException {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance(
            //System.getProperty(XmlPullParserFactory.PROPERTY_NAME), null);
            "org.xmlpull.mxp1.MXParserFactory", null);
        factory.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
        XmlPullParser r = factory.newPullParser();
        r.setInput(rr);

        XmlPullParser q = factory.newPullParser();
        q.setInput(rq);

        while(true) {
            r.next();
            q.next();
            if(r.getEventType() != q.getEventType()) {
                throw new RuntimeException("inconsistent events");
            }
            if(r.getEventType() == XmlPullParser.END_DOCUMENT) {
                break;
            }
            if(r.getEventType() == XmlPullParser.START_TAG || r.getEventType() == XmlPullParser.END_TAG ) {
                String rName = r.getName();
                String qName =  q.getName();
                if(!rName.equals(qName)) {
                    throw new RuntimeException("element names mismatch");
                }
                if(r.getEventType() == XmlPullParser.START_TAG) {
                }
            } else if(r.getEventType() == XmlPullParser.TEXT) {
                String rText = r.getText();
                String qText =  q.getText();
                if(!rText.equals(qText)) {
                    throw new RuntimeException("text content mismatch '"+rText+"' and '"+qText+"'");
                }

            } else {
                throw new RuntimeException("unknown event type "+r.getEventType()
                                               +r.getPositionDescription());
            }
            System.err.print(".");
        }
        System.err.println("\nOK");

    }