JAXB - 编组单引号字符代码

时间:2012-01-17 18:01:48

标签: java xml jaxb escaping html-entities

我正在使用JAXB生成上传到Google Feed的XML。在测试并将这个新方法的输出与我们正在使用的旧方法(使用JSP)的输出进行比较时,我注意到单引号字符没有被正确处理。

字段内容:

& ' " > <

旧正确输出:

<title> &amp; &#39; &quot; &gt; &lt; </title>

新错误输出:

<title> &amp; ' &quot; &gt; &lt; </title>

我尝试用

替换字段中的所有单引号字符
&#39

在我编写XML之前,但最终用字符代码替换了&符号,并且在编组后让我坐在那里没用#39。

我应该在哪个时候尝试解决这个问题?我可以通过在将字符串传递到JAXB类之前以某种方式更改字符串来获得正确的行为,还是我必须做些什么来改变编组处理单引号的方式?

感谢阅读!

编辑: 对不起我以前不太清楚,Google的文档要求这5个字符由其实体或字符代码表示。

从他们的文件:

不在CDATA部分中的数据值(包括URL)必须使用转义中列出的字符的转义码 下表。您可以使用实体代码或字符代码来表示这些特殊字符。

Ampersand & &amp; &#38;
Single Quote ' &apos; &#39;
Double Quote " &quot; &#34;
Greater Than > &gt; &#62;
Less Than < &lt; &#60;

如果可能的话,我想避开CDATA路线。

1 个答案:

答案 0 :(得分:3)

单引号不必转义。关于XML格式的第二个输出是正确的,更简洁,甚至更好。

如果您希望对转义哪些字符(以及如何转义)进行细粒度控制,您可以尝试实现自己的CharacterEscapeHandle。从未尝试过,但它被记录为JSXB RI的一个功能。

另见: