Я использовал пользовательский EntityResolver, как в примере выше, но он все еще искал файл DTD в другом базовом каталоге. Я отладил его и обнаружил, что мне нужно изменить системное свойство user.dir. Поэтому я добавил эту строку в метод инициализации приложения, и теперь он работает.

я есть следующий код Java:


DocumentBuilder db=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc=db.parse(new File("/opt/myfile"));

А также/opt/myfile содержит что-то вроде:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE archive SYSTEM "../../schema/xml/schema.dtd">
...

Я получаю следующую ошибку:

java.io.FileNotFoundException: /../schema/xml/schema.dtd (No such file or directory)

Это большой Java-фреймворк, который использует XML-файл, созданный в другом месте. Я думаю, что относительный путь является проблемой. Я не думаю, что будет приемлемо изменить cwd до запуска JVM (путь берется из файла конфигурации, который читается самой JVM), и я не нашел способа изменить cwd во время работы JVM. Как мне проанализировать этот XML-файл с соответствующим DTD?

Ответы на вопрос(3)

Ваш ответ на вопрос