Справочная информация : Я читаю файловую структуру на разных старых ОС (Aix, HP-UX ...) и превращаю некоторую информацию о пути и файле в документ XML.
Проблема: иногда существуют пути / файлы, названные непечатаемыми символами, например (перечислены ls -b
):
important_document\033[D\033[-
Эти пути / имена файлов помещаются в строку, содержащуюся в объекте, который, в свою очередь, маршалируется в XML-документ следующим образом (writer
is):
JAXBContext context = JAXBContext.newInstance(Inventory.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.marshal(inventory, writer);
Маршаллер не жалуется на непечатные символы и с радостью создает документ XML, который другие инструменты отклоняют как недопустимый XML.
Вопрос : Есть ли способ заставить маршаллер кодировать непечатаемые символы в выводе?
Я мог бы очистить путь / имя файла, но я бы предпочел, чтобы это происходило по всему документу без необходимости очищать все отдельные точки данных.