You might try setting binmode on your filehandle before you read from it. It will certainly let you read past the EOF marker under NT, but it may have other side effects. Only tests on your specific systems/files will tell...
Strictly speaking, though, it sounds like your "XML file that has binary material in it" isn't an XML file. It's a file that happens to contain an XML string in it. A minor-sounding (but very important) distinction.
"One word of warning: if you meet a bunch of Perl programmers on the bus or something, don't look them in the eye. They've been known to try to convert the young into Perl monks." - Frank Willison