allow whitespace in fields

use a generator for iterating over siblings
use builtin get_text to get element text
fix off-by-one bug

why was that ever a good idea...?