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