Hudzilla.org - the homepage of Paul Hudson
Contents > XML & XSLT Wish List | Report Bug | About Me ]

12.2     Event-based parsing

This is NOT the latest copy of this book; click here for the latest version.

Expat, being an event-based parser, processes your XML document and reports events through callback functions you specify. To give you an idea how it works, consider the following XML:

<lie>
ASP is better than PHP
</lie>

As you can see, the XML contains only one element, "<lie>", which is the root element. When this element is encountered by Expat, it calls the function you specified for the start of an element, passing in the parameter "lie". Then it calls the function you specified for handling character data, passing the parameter "ASP is better than PHP". Finally, it reads "</lie>", and calls the function you provided for closing elements, passing in "lie" again.

When PHP calls your function for starting element, it also passes in an array of attributes that parameter has. This is shown below:

<lie type="statistic">
ASP is 20% more popular than PHP
</lie>

In that example, PHP would pass an array to your start element function containing one element - "type", with the value "statistic".

Now you have an idea of how an event-based parser works, we can take a look at how PHP implements Expat.





<< 12.1 Introduction to XML   12.2.1 Creating a parser: xml_parser_create() and xml_parser_free() >>
Table of Contents
Want to see this stuff in print? PHP in a Nutshell takes the core topics covered here, adds in thousands of edits from the editorial team and myself, and combines them to make an unbeatable reference for PHP programmers at all levels.



My latest book has hundreds more tips on how to use PHP, Apache, and MySQL, plus Perl, Python, shell scripts, performance tuning, and more!



Top-right shadow
 
Bottom-left shadow Bottom shadow

Comments from other readers
Be the first to add a comment to this chapter!



Add comment
Please note that by posting a comment here you are committing it to the public domain. This is important so that others can make use of your code themselves, and also so that I can incorporate helpful notes directly into the main text. Comments are limited to 2000 characters in length.

If you are reporting an error in the content, please tell me directly.

Your name/email address:
Your comment:
 
Now, in order to verify that you're a real person, please answer this simple question: what is two plus seven?
The answer is:
(please write in
numbers, eg 19)


Top-right shadow
 
Bottom-left shadow Bottom shadow