我正在使用JAXB生成上传到Google Feed的XML。在测试并将这个新方法的输出与我们正在使用的旧方法(使用JSP)的输出进行比较时,我注意到单引号字符没有被正确处理。
字段内容:
& ' " > <
旧正确输出:
<title> & ' " > < </title>
新错误输出:
<title> & ' " > < </title>
我尝试用
替换字段中的所有单引号字符'
在我编写XML之前,但最终用字符代码替换了&符号,并且在编组后让我坐在那里没用#39。
我应该在哪个时候尝试解决这个问题?我可以通过在将字符串传递到JAXB类之前以某种方式更改字符串来获得正确的行为,还是我必须做些什么来改变编组处理单引号的方式?
感谢阅读!
编辑: 对不起我以前不太清楚,Google的文档要求这5个字符由其实体或字符代码表示。
从他们的文件:
不在CDATA部分中的数据值(包括URL)必须使用转义中列出的字符的转义码 下表。您可以使用实体代码或字符代码来表示这些特殊字符。
Ampersand & & &
Single Quote ' ' '
Double Quote " " "
Greater Than > > >
Less Than < < <
如果可能的话,我想避开CDATA路线。
答案 0 :(得分:3)
单引号不必转义。关于XML格式的第二个输出是正确的,更简洁,甚至更好。
如果您希望对转义哪些字符(以及如何转义)进行细粒度控制,您可以尝试实现自己的CharacterEscapeHandle
。从未尝试过,但它被记录为JSXB RI的一个功能。