Java tutorial
//package com.java2s; // for license please see accompanying LICENSE.txt file (available also at http://www.xmlpull.org/) import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; public class Main { /** * Return everything past PITarget and S from Processing Instruction (PI) as defined in * XML 1.0 Section 2.6 Processing Instructions * <code>[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'</code> * * <p><b>NOTE:</b> if there is no PI data it returns empty string. */ public static String getPIData(XmlPullParser pp) throws IllegalStateException { int eventType; try { eventType = pp.getEventType(); } catch (XmlPullParserException ex) { // should never happen ... throw new IllegalStateException( "could not determine parser state: " + ex + pp.getPositionDescription()); } if (eventType != XmlPullParser.PROCESSING_INSTRUCTION) { throw new IllegalStateException("parser must be on processing instruction and not " + XmlPullParser.TYPES[eventType] + pp.getPositionDescription()); } final String PI = pp.getText(); int pos = -1; for (int i = 0; i < PI.length(); i++) { if (isS(PI.charAt(i))) { pos = i; } else if (pos > 0) { return PI.substring(i); } } return ""; } /** * Return true if chacters is S as defined in XML 1.0 * <code>S ::= (#x20 | #x9 | #xD | #xA)+</code> */ private static boolean isS(char ch) { return (ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t'); } }