Skip to content

Instantly share code, notes, and snippets.

@shvalb
Last active July 29, 2016 15:38
Show Gist options
  • Save shvalb/0022fc6a7c8662b80f1b3631329b89b4 to your computer and use it in GitHub Desktop.
Save shvalb/0022fc6a7c8662b80f1b3631329b89b4 to your computer and use it in GitHub Desktop.
Async Parsing multiple XML docs from socket
private void processMessages(ReadStream<Buffer> f) {
AsyncXMLParser parser = new AsyncXMLParser();
f.toObservable()
.map(buf -> (io.vertx.core.buffer.Buffer)buf.getDelegate())
.flatMap(parser::feed)
.doOnNext(element -> {
switch(element.getType()) {
case XMLEvent.START_DOCUMENT:
// TODO: Create a new class object here.
// Something like:
// TutorResult res = new TutorResult();
break;
case XMLEvent.START_ELEMENT:
// TODO: Set object's attributes here.
// Something like:
// res.setId(element.getId());
break;
case XMLEvent.END_DOCUMENT:
// TODO: Object was parsed\built successfully --> Forward to upper application layer.
// Something like:
// listener.handle(res);
}
})
.subscribe(next -> { System.out.println(next); }
, e -> { System.out.println(e); }
, () -> { System.out.println("FINISHED"); }
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment