In this chapter, we have looked at how to use REXML to parse XML in both stream-oriented and tree-oriented styles; we've also seen how to use REXML's XPath interface.
We've looked at parsing feeds in XML-based formats. The rss library handles RSS, and the feedtools library handles both RSS and Atom (and interconverts between them).
We've looked at reading and manipulating graphic images in many formats with RMagick; We've also seen its drawing API, which enables us to add arbitrary text and shapes to an image. Finally, we've seen how PDF::Writer can produce complex, high-quality PDF documents in a programmatic fashion.
In the next chapter, we will look at a different topic entirely. The next chapter deals with effective testing and debugging in Ruby.