Я использую стороннее приложение и хотел бы изменить один из его файлов. Файл хранится в XML, но с недопустимым типом doctype.Изменение Java и перемещение нестандартного XML-файла
Когда я пытаюсь читать, используйте ошибки, потому что doctype содержит «файл: ///ReportWiz.dtd» (как показано, с кавычками), и я получаю исключение, потому что не могу найти файл. Есть ли способ сказать разработчику игнорировать это? Я попробовал setValidate для false и setNamespaceAware для false для DocumentBuilderFactory.
Единственное решение, я могу думать, являются
- копия файла построчно в новый файл, минуя обижая линию, делать то, что мне нужно делать, а затем скопировать в другой новый файл и вставить обижая линия обратно, или
- делают в основном те же выше, но работая с FileStream какой-то (хотя я не ясно, о том, как я мог бы сделать this..help?)
DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance(); docFactory.setValidating(false); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.parse(file);
не могли бы вы помочь мне с некоторым примером кода (или ссылкой), это звучит так же, как то, что я хочу делать. – 2008-12-11 00:09:34
Похоже, что вы хотите сделать, это подкласс FilterInputStream и перезаписать read(). Когда вы будете читать, вызовите super.read(), чтобы получить данные, просмотреть и изменить данные и вернуть их. Я буду обманывать его, если я получу какое-то время, но это не должно быть слишком сложно. – 2008-12-11 22:19:48
Вот пример, который имеет очень простую фильтрацию (это исключает непечатаемые символы из потока, который я считаю). http://www.cafeaulait.org/slides/sd2000west/javaio/44.html Ваш случай сложнее, потому что вам нужно распознать многосимвольный шаблон. – 2008-12-11 22:21:51