首页 > 解决方案 > JAXB / Java 1.6 / 不可打印字符

问题描述

背景:我正在阅读不同旧操作系统(Aix、HP-UX ...)上的文件结构,并将一些路径和文件信息转换为 XML 文档。

问题:有时,有以不可打印字符命名的路径/文件,例如(用 列出ls -b):

important_document\033[D\033[-

这些路径/文件名被放入一个对象保存的字符串中,该对象又被编组为 XML 文档,如下所示(writeris):

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 拒绝。

问题:有没有办法让编组器在输出中编码不可打印的字符?

我可以清理路径/文件名,但我宁愿它发生在文档范围内,而不必清理所有单独的数据点。

标签: javajaxb

解决方案


推荐阅读