If you are not familiar with XML, check out the Wikipedia entry. Basically, an XML document defines a tree of data. Each node in the tree corresponds to a tag, with a type and a list of attribute-value pairs. Nodes can be atomic, in which case there is a single tag marking the node description as complete. Or nodes can have children, in which case the node opens with a beginning tag, then continues with a nested specification of the node's children, then ends with a closing tag. XML is a convenient way to read in and out data because it's a standard, flexible format and java provides easy and efficient tools for reading it.
The XML reading code is located in the file FlockingReader.java. The code uses the SAX interface (see this quickstart guide), which processes each XML document incrementally and provides data from the XML file to an application using callbacks. In FlockingReader.java, the startElement callback does all the interesting work of creating and updating agents in the simulation.
All these agents come with a range of attributes and values that you can set from XML. These are: