我正在做一些来自 WS 的 xml 报告。报告应该是 PDF 格式,所以我选择了 fop 库来制作它。当我尝试从位于我计算机上的 xml 文件中的 xml 生成报告时,一切正常。当我在 WebServer 上调用此方法时,问题就开始了。我在这条线上有例外:
transformer.transform(src, res);
例外是:
org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x2) was found in the element content of the document.
首先是 (Unicode: 0x1a) 字符,但我用这个函数剪掉了它:
private static String stripNonValidXMLCharacters(String in) {
if (in == null || ("".equals(in))) {
return null;
}
StringBuffer out = new StringBuffer(in);
for (int i = 0; i < out.length(); i++) {
if (out.charAt(i) == 0x1a) {
out.setCharAt(i, '-');
}
}
return out.toString();
}
但后来出现了(Unicode:0x2)字符。尝试添加
else if (out.charAt(i) == 0x2) {
out.setCharAt(i, '-');
}
没有帮助。
我正在使用 fop 版本 0.95。