Как я могу вынудить синтаксический анализатор SAX использовать DTD, если Вы не указаны во входном файле?

Как я могу вынудить синтаксический анализатор SAX (а именно, Xerces в Java) использовать DTD при парсинге документа, не имея никакого doctype во входном документе? Это даже возможно?

Вот еще некоторые детали моего сценария:

У нас есть набор XML-документов, которые соответствуют тому же DTD, которые сгенерированы несколькими различными системами (ни один из которого я могу измениться). Некоторые из этих систем добавляют doctype к их выходным документам, другие не делают. Некоторое использование назвало символьную сущность, некоторые не делают. Некоторое использование назвало символьную сущность, не объявляя doctype. Я знаю, что это не является кошерным, но это - то, с чем я должен работать.

Я работаю над системой, которая должна проанализировать эти файлы в Java. В настоящее время это обрабатывает вышеупомянутые случаи первым чтением в XML-документе как поток, пытаясь обнаружить, если этому определили doctype и добавление doctype объявления, если Вы уже не присутствуете. Проблема состоит в том, что этот код является багги, и я хотел бы заменить его чем-то инструмент для очистки.

Файлы являются большими, таким образом, я не могу использовать основанное на DOM решение. Я также пробую, разрешили символьную сущность, таким образом, это не помогает использовать XML-схему.

Если у Вас есть решение, Вы могли бы отправить его непосредственно вместо того, чтобы связаться с ним? Это не делает Переполнения стека много пользы если в будущее, там правильное решение с битой ссылкой.

11
задан Kaypro II 2 August 2011 в 15:15
поделиться