I'm not sure I could reasonably envision any use of nonblocking i/o operations in an xml parser. I'm not sure if I've ever seen anyone do it before.
In any case, I figured you might find this entertaining: http://www.snellspace.com/wp/?p=381 http://danga.com:8081/atom-stream.xml is a never-ending xml stream. URL url = new URL("http://danga.com:8081/atom-stream.xml"); // we only care about the feed title and alternate link, // we'll ignore everything else ParseFilter filter = new WhiteListParseFilter(); filter.add(new QName("atomStream")); filter.add(Constants.FEED); filter.add(Constants.TITLE); filter.add(Constants.LINK); ParserOptions options = Parser.INSTANCE.getDefaultParserOptions(); options.setParseFilter(filter); Document doc = Parser.INSTANCE.parse( url.openStream(),(URI)null,options); Element el = doc.getRoot(); // get the first feed in the stream, then continue to iterate // from there, printing the title and alt link to the console Feed feed = el.getFirstChild(Constants.FEED); while (feed != null) { System.out.println( feed.getTitle() + "t" + feed.getAlternateLink().getHref()); Feed next = feed.getNextSibling(Constants.FEED); feed.discard(); feed = next; } There are some memory-creep issues so I wouldn't recommend keeping this running forever :-) - James Garrett Rooney wrote: > On 7/12/06, James M Snell <[EMAIL PROTECTED]> wrote: >> Right now documents are parsed incrementally. When I >> Parser.INSTANCE.parse(...) what I'm handed back is not yet a fully >> parsed document. As I go through the various getters, the document is >> parsed up to whatever point it needs to answer that method call. It >> could definitely be better, however. > > Sure, but if you call getRoot() it's still going to block until it > reads enough off of the InputStream to parse the root element, right? > There's no nonblocking interface. > > -garrett >
