我有一个应用程序(像许多其他人)接受用户输入,将其存储在数据库中,然后使用(其中包括)
XML工具进行处理.该应用程序采用免费文本输入,像许多其他开发人员一样,我非常小心地转义和引用,因此它可以处理包含不同类型的空格,引号,保留的XML字符等的输入.
但是,偶尔用户将会设法输入一个包含垂直制表符(十六进制0B)或表单(十六进制0C)的字符串.这完全不能被XML工具处理,并导致应用程序到barf.
在我的应用程序中,在“往返”过程中保留原始输入是非常重要的,所以我不想删除我不喜欢的任何字符,特别是像平常的文本文件中偶尔使用的表单Feed .
在涉及XML处理时,是否有任何接受的最佳做法或处理这些字符的一般策略?
是的,不幸的是,一些字符在XML中是非法的,并且没有实体等同.作为这些例子之一,请参阅:
原文链接:https://www.f2er.com/xml/292843.htmlhttp://www.jdom.org/docs/apidocs.1.1/org/jdom/Element.html#setText(java.lang.String)
这是一个String setter …可以抛出异常! “垂直”选项卡正是其中没有XML实体的字符之一,也不是单独使用XML“转义”它的方式.
我正在使用base64编码来清理可能包含这些字符的字符串.这有点傻,因为我必须对所有的base64编码和解码,但我不认为有一个很好的选择.