1 2 4 import java.io.*; 5 6 import org.xmlpull.v1.XmlPullParser; 7 import org.xmlpull.v1.XmlPullParserException; 8 import org.xmlpull.v1.XmlPullParserFactory; 9 10 import org.xmlpull.v1.XmlSerializer; 11 12 16 17 public class Roundtrip { 18 protected final static String PROPERTY_XMLDECL_STANDALONE = 21 "http://xmlpull.org/v1/doc/features.html#xmldecl-standalone"; 22 23 XmlPullParser parser; 24 XmlSerializer serializer; 25 26 public Roundtrip (XmlPullParser parser, XmlSerializer serializer) { 27 this.parser = parser; 28 this.serializer = serializer; 29 } 30 31 public void writeStartTag () throws XmlPullParserException, IOException { 32 if (!parser.getFeature (parser.FEATURE_REPORT_NAMESPACE_ATTRIBUTES)) { 38 for (int i = parser.getNamespaceCount (parser.getDepth ()-1); 39 i < parser.getNamespaceCount (parser.getDepth ())-1; i++) { 40 serializer.setPrefix 41 (parser.getNamespacePrefix (i), 42 parser.getNamespaceUri (i)); 43 } 44 } 45 serializer.startTag(parser.getNamespace (), parser.getName ()); 46 47 for (int i = 0; i < parser.getAttributeCount (); i++) { 48 serializer.attribute 49 (parser.getAttributeNamespace (i), 50 parser.getAttributeName (i), 51 parser.getAttributeValue (i)); 52 } 53 } 55 56 57 public void writeToken (int eventType) throws XmlPullParserException, IOException { 58 switch (eventType) { 59 case XmlPullParser.START_DOCUMENT: 60 Boolean standalone = (Boolean ) parser.getProperty(PROPERTY_XMLDECL_STANDALONE); 62 serializer.startDocument(parser.getInputEncoding(), standalone); 63 break; 64 65 case XmlPullParser.END_DOCUMENT: 66 serializer.endDocument(); 67 break; 68 69 case XmlPullParser.START_TAG: 70 writeStartTag (); 71 break; 72 73 case XmlPullParser.END_TAG: 74 serializer.endTag(parser.getNamespace (), parser.getName ()); 75 break; 76 77 case XmlPullParser.IGNORABLE_WHITESPACE: 78 String s = parser.getText (); 80 serializer.ignorableWhitespace (s); 81 break; 82 83 case XmlPullParser.TEXT: 84 serializer.text (parser.getText ()); 85 break; 86 87 case XmlPullParser.ENTITY_REF: 88 serializer.entityRef (parser.getName ()); 89 break; 90 91 case XmlPullParser.CDSECT: 92 serializer.cdsect( parser.getText () ); 93 break; 94 95 case XmlPullParser.PROCESSING_INSTRUCTION: 96 serializer.processingInstruction( parser.getText ()); 97 break; 98 99 case XmlPullParser.COMMENT: 100 serializer.comment (parser.getText ()); 101 break; 102 103 case XmlPullParser.DOCDECL: 104 serializer.docdecl (parser.getText ()); 105 break; 106 } 107 } 108 109 public void roundTrip () throws XmlPullParserException, IOException { 110 parser.nextToken(); writeToken (parser.START_DOCUMENT); while (parser.getEventType () != parser.END_DOCUMENT) { 113 writeToken ( parser.getEventType () ); 114 parser.nextToken (); 115 } 116 writeToken (parser.END_DOCUMENT); 117 } 118 119 public static void main(String [] args) throws Exception { 120 for (int i = 0; i < 1; i++) 122 { 123 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 124 XmlPullParser pp = factory.newPullParser(); 125 XmlSerializer serializer = factory.newSerializer(); 126 127 pp.setInput(new java.net.URL (args[ i ]).openStream(), null); 128 serializer.setOutput( System.out, null); 129 130 (new Roundtrip(pp, serializer)).roundTrip(); 131 } 132 } 133 134 } 135 136 137 138
| Popular Tags
|