Как заставить синтаксический анализатор SAX (в частности, Xerces in Java) использовать DTD при анализе документа без наличия любого doctype во входном документе? Возможно ли это?
Вот несколько подробностей моего сценария:
У нас есть куча XML-документов, которые соответствуют тому же DTD, которые генерируются несколькими разными системами (ни один из которых я не могу изменить). Некоторые из этих систем добавляют doctype к их выходным документам, другие - нет. Некоторые используют именованные объекты символов, некоторые - нет. Некоторые используют именованные объекты символов без объявления doctype. Я знаю, что не кошерный, но это то, с чем мне нужно работать.
Я работаю над системой, которая должна разбирать эти файлы на Java. В настоящее время он обрабатывает вышеуказанные случаи, сначала прочитав в документе XML как поток, пытаясь определить, имеет ли он определенный тип doctype, и добавляет объявление doctype, если оно еще не присутствует. Проблема в том, что этот код неисправен, и я бы хотел заменить его чем-то более чистым.
Файлы большие, поэтому Я не могу использовать DOM-решение. Я также пытаюсь получить символьные сущности, поэтому он не помогает использовать XML-схему.
Если у вас есть решение, не могли бы вы разместить его прямо, а не ссылку на него? Это не делает переполнение стека очень хорошим, если в будущем есть правильное решение с мертвой ссылкой.