Проблема в том, что в неполных именах есть коллизия.
То есть, в результате ваших import
утверждений, неквалифицированное имя Document
относится к javax.swing.text.Document
, но вам действительно нужно org.w3c.dom.Document
(это тип, который возвращает анализатор).
Вы можете исправить это, используя полное имя:
org.w3c.dom.Document doc = (org.w3c.dom.Document) parser.parse(sourceFile);
Или вы также можете конкретно import
конкретный Document
следующим образом:
import javax.swing.text.*;
import org.w3c.dom.*;
import org.w3c.dom.Document;
//...
Document doc = (Document) parser.parse(sourceFile);
Это называется однотипным объявлением импорта ( JLS 7.5.1 ), и его можно использовать для "затенения" других объявлений.