Java XML字符串文字突然终止

时间:2014-04-24 20:31:56

标签: java xml string

我有一些看起来像这样的Java代码:

String xml = "<string>" + escapeXml(input) + "</string>";

protected String escapeXml(String input) {
  return input.replaceAll("&", "&amp;")
              .replaceAll("'", "&apos;")
              .replaceAll("\"", "&quot;")
              .replaceAll("<", "&lt;")
              .replaceAll(">", "&gt;")
}

input是一个可变的UTF-8编码字符串。

我发现的是,在某些情况下,xml字符串最终等于<string>而不包含</string>。为什么会这样? Java是否有可能将escapeXml评估为在</string>附加到字符串之前截断字符串的内容?

更新:为了回应Sotirios,请允许我补充一些说明。 xml字符串正在保存到SQLite数据库列,而该数据库列又由另一个实用程序解析。到目前为止,我注意到当保存到数据库的xml字符串是<string><string>之后带有一些非ASCII Unicode字符时,就会出现这种情况。

input自动从钩子进入Android功能。因为一切都在Android上以非标准配置运行,所以调试有点难以准确了解正在发生的事情。我希望可能有一些涉及Java字符串的明显答案。

1 个答案:

答案 0 :(得分:0)

我从来没有深究这一点,但我通过修改escapeXml函数来使用正确的XML编码器(org.apache.commons.lang库)来解决我的问题。我不知道这会产生什么影响,但确实如此,现在xml字符串已正确构建。