JAXBでたまに

Exception in thread "main" javax.xml.bind.DataBindingException: java.net.MalformedURLException: unknown protocol: c
at javax.xml.bind.JAXB.unmarshal(Unknown Source)
   (略)
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at java.net.URI.toURL(Unknown Source)
at javax.xml.bind.JAXB.toSource(Unknown Source)
... 3 more

が起きて、問題のXMLを見てもどう見ても正しい訳だが、要するに

 Example hoge = JAXB.unmarshal(XMLファイル名, Example.class);

の、XMLファイル名の中身が"c:/aaa/bbb.xml"等のWindowsのドライブ名が入ったプルパスだと起こると。
c:がhttp:とかftp:のようにプロトコルと解釈されて、「c」なんてプロトコルは知らぬ、と。
"file://c:/aaa/bbb.xml"のように書けば…というか一旦InputStreamにすれば良いのか。