背景:我正在不同的旧操作系统(Aix,HP-UX ...)上读取文件结构,并将一些路径和文件信息转换为XML文档。
问题:有时,有些路径/文件用不可打印的字符命名(例如,以ls -b
列出):
important_document\033[D\033[-
这些路径/文件名被放入一个对象所保存的字符串中,该对象又被编组为XML文档,例如{writer
是:
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。
问题:有什么方法可以使编组器在输出中编码不可打印的字符?
我可以清理路径/文件名,但我希望它在文档范围内发生,而无需清理所有单独的数据点。