【问题标题】:JAXB - Marshalling a single quote character codeJAXB - 编组单引号字符代码
【发布时间】:2012-02-12 12:57:20
【问题描述】:

我正在使用 JAXB 生成上传到我们的 Google 提要的 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 路由。

【问题讨论】:

    标签: java xml jaxb escaping html-entities


    【解决方案1】:

    单引号不必转义。第二个输出在XML格式方面是正确的,更简洁,更好。

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

    另见:

    【讨论】:

    • @swoogles:我在回答中添加了CharacterEscapeHandle 的提示,你可以试试吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多