Игнорирование DTD при синтаксическом анализе XML

Как я могу игнорировать объявление DTD при разборе файла с помощью библиотеки XOM xml.В моем файле есть следующая строка:

<?xml version="1.0"?>
<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "NCBI_BlastOutput.dtd">
//rest of stuff here 

И когда я пытаюсь построить () мой документ, я получаю исключение filenotfound для файла DTD. Я знаю, что у меня нет этого файла, и меня это не волнует, поэтому как его можно удалить при использовании XOM?

Вот фрагмент кода:

public BlastXMLParser(String filePath) {
    Builder b = new Builder(false);
     //not a good idea to have exception-throwing code in constructor
    try {

        _document = b.build(filePath);
    } catch (ParsingException ex) {
        Logger.getLogger(BlastXMLParser.class.getName()).log(Level.SEVERE,"err", ex);
    } catch (IOException ex) {
        //
    }

private Elements getBlastReads() {
    Element root = _document.getRootElement();
    Elements rootChildren = root.getChildElements();

    for (int i = 0; i < rootChildren.size(); i++) {
        Element child = rootChildren.get(i);
        if (child.getLocalName().equals("BlastOutput_iterations")) {

            return child.getChildElements();
        }
    }

    return null;
}
}

Я получаю исключение NullPointerException в этой строке:

Element root = _document.getRootElement();

Удалив строку DTD из исходного XML-файла, я могу успешно проанализировать его, но это не вариант в окончательной производственной системе.

10
задан LordDoskias 10 November 2011 в 14:58
поделиться