处理垂直标签和其他无效xml字符的最佳做法

我有一个应用程序(像许多其他人)接受用户输入,将其存储在数据库中,然后使用(其中包括) XML工具进行处理.该应用程序采用免费文本输入,像许多其他开发人员一样,我非常小心地转义和引用,因此它可以处理包含不同类型的空格,引号,保留的XML字符等的输入.

但是,偶尔用户将会设法输入一个包含垂直制表符(十六进制0B)或表单(十六进制0C)的字符串.这完全不能被XML工具处理,并导致应用程序到barf.

在我的应用程序中,在“往返”过程中保留原始输入是非常重要的,所以我不想删除我不喜欢的任何字符,特别是像平常的文本文件中偶尔使用的表单Feed .

在涉及XML处理时,是否有任何接受的最佳做法或处理这些字符的一般策略?

是的,不幸的是,一些字符在XML中是非法的,并且没有实体等同.作为这些例子之一,请参阅:
http://www.jdom.org/docs/apidocs.1.1/org/jdom/Element.html#setText(java.lang.String)

这是一个String setter …可以抛出异常! “垂直”选项卡正是其中没有XML实体的字符之一,也不是单独使用XML“转义”它的方式.

我正在使用base64编码来清理可能包含这些字符的字符串.这有点傻,因为我必须对所有的base64编码和解码,但我不认为有一个很好的选择.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念