Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX


KXML: A Great Find for XML Parsing in J2ME  : Page 2

Enhydra's kXML is a great little XML parser with a small footprint, making it perfect for J2ME apps. It uses a unique method of DOM manipulation and parsing called "pull parsing." Find out whether kXML is must-have for your toolbox.




Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js

Pull Parsing
Anyway, enough theory. Suffice it to say that kXML is easy to use. So let's look at a quick example that shows how kXML works as a pull parser. The demo is called kXMLDemo_pull. It will use a pull parser to go through a file that contains address book information. Shown below are some of the more important lines in the source code and a description of what they do.

1.XmlParser parser = null; 2. 3.parser = new XmlParser( new InputStreamReader( 1this.getClass().getResourceAsStream(resfile_name) ));

Line 3 creates an XmlParser passing it the InputStream from a resource read in as a stream. This parser is called repeatedly until an END_DOCUMENT event is issued.

1.while ( (event = parser.read()).getType() != Xml.END_DOCUMENT ) { 2. ... 3.if (name != null && name.equals("address")) { 4. ... 5. parseAddressTag( parser );

Line 3 determines if the event is the start of an <address> tag, and line 5 passes the parser to the "parseAddressTag," which takes control of the parser.

1.while ((event = parser.peek()).getType() != Xml.END_DOCUMENT) { 2.... 3. if (type == Xml.END_TAG && name.equals("address")) { 4. return; 5. } 6.... 7. ParseEvent next = parser.read(); 8. 9. // if it's not a text event then skip it 10. if (next.getType() != Xml.TEXT) { 11. continue; 12. } 13.... 14. System.err.println(name + ": " + text);

The code immediately above is inside the "parseAddressTag." It will loop until it finds the END_TAG for <address>. If it encounters any other tag, then its name and the contents inside it are printed out to the console. So if the tag <name>Robert Cadena</name> is found, you'll see the following console output:

name: Robert Cadena

Once the end of <address> is found (lines 8-10) control is returned to the calling function, which then begins checking for <address> again.

As you can see, using the pull parser is easy, and it's a great benefit to be able to pass the parser to another function and begin looking for elements inside the document. And you aren't restricted to parsing resource files; you can also use HttpConnection and pass this function the http InputStream. This saves you from having to read the InputStream, save the content, and then parse it; kXML handles all that for you.

Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date