/** * Skips a tag or subtree. */ public static void skip(XMLStreamReader parser) throws XMLStreamException { assert parser != null; int level = 1; while (next(parser)) { int event = parser.getEventType(); if (event == XMLStreamConstants.START_ELEMENT) { level++; } else if (event == XMLStreamConstants.END_ELEMENT) { level--; if (level == 0) { break; } } } next(parser); }
/** * Skips a tag or subtree. */ public static void skip(XmlPullParser parser) throws XmlPullParserException { assert parser != null; int level = 1; while (next(parser)) { int event = parser.getEventType(); if (event == XmlPullParser.START_TAG) { level++; } else if (event == XmlPullParser.END_TAG) { level--; if (level == 0) { break; } } } next(parser); }
/** * Parses a collection tag. */ private static AtomElement parseCollection(XMLStreamReader parser) throws XMLStreamException { QName name = parser.getName(); Map<String, String> result = new HashMap<String, String>(); result.put("href", parser.getAttributeValue(null, "href")); XMLUtils.next(parser); while (true) { int event = parser.getEventType(); if (event == XMLStreamConstants.START_ELEMENT) { QName tagName = parser.getName(); if (XMLConstants.NAMESPACE_RESTATOM.equals(tagName.getNamespaceURI()) && TAG_COLLECTION_TYPE.equals(tagName.getLocalPart())) { result.put("collectionType", XMLUtils.readText(parser, XMLConstraints.MAX_STRING_LENGTH)); } else { XMLUtils.skip(parser); } } else if (event == XMLStreamConstants.END_ELEMENT) { break; } else { if (!XMLUtils.next(parser)) { break; } } } XMLUtils.next(parser); return new AtomElement(name, result); }
/** * Parses a collection tag. */ private static AtomElement parseCollection(XmlPullParser parser) throws XmlPullParserException { QName name = new QName(parser.getNamespace(), parser.getName()); Map<String, String> result = new HashMap<String, String>(); result.put("href", parser.getAttributeValue(null, "href")); XMLUtils.next(parser); while (true) { int event = parser.getEventType(); if (event == XmlPullParser.START_TAG) { QName tagName = new QName(parser.getNamespace(), parser.getName()); if (XMLConstants.NAMESPACE_RESTATOM.equals(tagName.getNamespaceURI()) && TAG_COLLECTION_TYPE.equals(tagName.getLocalPart())) { result.put("collectionType", XMLUtils.readText(parser, XMLConstraints.MAX_STRING_LENGTH)); } else { XMLUtils.skip(parser); } } else if (event == XmlPullParser.END_TAG) { break; } else { if (!XMLUtils.next(parser)) { break; } } } XMLUtils.next(parser); return new AtomElement(name, result); }
public T walk(XMLStreamReader parser) throws XMLStreamException { assert parser != null; final T result = prepareTarget(parser, parser.getName()); next(parser); // walk through all tags while (true) { int event = parser.getEventType(); if (event == XMLStreamConstants.START_ELEMENT) { QName name = parser.getName(); if (!read(parser, name, result)) { if (result instanceof ExtensionsData) { handleExtension(parser, (ExtensionsData) result); } else { skip(parser); } } } else if (event == XMLStreamConstants.END_ELEMENT) { break; } else { if (!next(parser)) { break; } } } next(parser); return result; }
public T walk(XmlPullParser parser) throws XmlPullParserException { final T result = prepareTarget(parser, new QName(parser.getNamespace(), parser.getName())); next(parser); // walk through all tags while (true) { int event = parser.getEventType(); if (event == XmlPullParser.START_TAG) { QName name = new QName(parser.getNamespace(), parser.getName()); if (!read(parser, name, result)) { if (result instanceof ExtensionsData) { handleExtension(parser, (ExtensionsData) result); } else { skip(parser); } } } else if (event == XmlPullParser.END_TAG) { break; } else { if (!next(parser)) { break; } } } next(parser); return result; }
/** * Parses a service document. */ private static ServiceDoc parseServiceDoc(XMLStreamReader parser) throws XMLStreamException { ServiceDoc result = new ServiceDoc(); XMLUtils.next(parser); while (true) { int event = parser.getEventType(); if (event == XMLStreamConstants.START_ELEMENT) { QName name = parser.getName(); if (XMLConstants.NAMESPACE_APP.equals(name.getNamespaceURI())) { if (TAG_WORKSPACE.equals(name.getLocalPart())) { result.addWorkspace(parseWorkspace(parser)); } else { XMLUtils.skip(parser); } } else { XMLUtils.skip(parser); } } else if (event == XMLStreamConstants.END_ELEMENT) { break; } else { if (!XMLUtils.next(parser)) { break; } } } return result; }
/** * Parses a service document. */ private static ServiceDoc parseServiceDoc(XmlPullParser parser) throws XmlPullParserException { ServiceDoc result = new ServiceDoc(); XMLUtils.next(parser); while (true) { int event = parser.getEventType(); if (event == XmlPullParser.START_TAG) { QName name = new QName(parser.getNamespace(), parser.getName()); if (XMLConstants.NAMESPACE_APP.equals(name.getNamespaceURI())) { if (TAG_WORKSPACE.equals(name.getLocalPart())) { result.addWorkspace(parseWorkspace(parser)); } else { XMLUtils.skip(parser); } } else { XMLUtils.skip(parser); } } else if (event == XmlPullParser.END_TAG) { break; } else { if (!XMLUtils.next(parser)) { break; } } } return result; }
/** * Parses a workspace element in a service document. */ private static RepositoryWorkspace parseWorkspace(XMLStreamReader parser) throws XMLStreamException { RepositoryWorkspace workspace = new RepositoryWorkspace(); XMLUtils.next(parser); while (true) { int event = parser.getEventType(); if (event == XMLStreamConstants.START_ELEMENT) { AtomElement element = parseWorkspaceElement(parser); // check if we can extract the workspace id if ((element != null) && (element.getObject() instanceof RepositoryInfo)) { workspace.setId(((RepositoryInfo) element.getObject()).getId()); } // add to workspace workspace.addElement(element); } else if (event == XMLStreamConstants.END_ELEMENT) { break; } else { if (!XMLUtils.next(parser)) { break; } } } XMLUtils.next(parser); return workspace; }
/** * Parses a workspace element in a service document. */ private static RepositoryWorkspace parseWorkspace(XmlPullParser parser) throws XmlPullParserException { RepositoryWorkspace workspace = new RepositoryWorkspace(); XMLUtils.next(parser); while (true) { int event = parser.getEventType(); if (event == XmlPullParser.START_TAG) { AtomElement element = parseWorkspaceElement(parser); // check if we can extract the workspace id if ((element != null) && (element.getObject() instanceof RepositoryInfo)) { workspace.setId(((RepositoryInfo) element.getObject()).getId()); } // add to workspace workspace.addElement(element); } else if (event == XmlPullParser.END_TAG) { break; } else { if (!XMLUtils.next(parser)) { break; } } } XMLUtils.next(parser); return workspace; }