Eh no! you need to squeeze yourself a bit more.
The cur_league tricks works because each event is contained strictly inside a league.
If the event can contain different items, some of them not required, you need a big handler for the event. In this handler you need to check the presence and the content of required (by you) fields and populate the CSV row accordingly.
XML::Twig has many (oh really maaany) methods to inspect silb, ancestor, attributes..
L*
There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.