Java XML字符串文本突然终止

Java XML字符串文本突然终止,java,xml,string,Java,Xml,String,我有一些Java代码如下所示: String xml = "<string>" + escapeXml(input) + "</string>"; protected String escapeXml(String input) { return input.replaceAll("&", "&amp;") .replaceAll("'", "&apos;") .replaceAll("

我有一些Java代码如下所示:

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

protected String escapeXml(String input) {
  return input.replaceAll("&", "&amp;")
              .replaceAll("'", "&apos;")
              .replaceAll("\"", "&quot;")
              .replaceAll("<", "&lt;")
              .replaceAll(">", "&gt;")
}
输入是一个变量UTF-8编码字符串

我的发现是,在某些情况下,xml字符串在没有封闭的情况下最终等于。为什么会这样?Java是否可以对escapeXml求值,使其在附加到字符串之前截断字符串

更新:关于索蒂里奥斯,让我补充一些澄清。xml字符串被保存到SQLite数据库列中,该列又被另一个实用程序解析。到目前为止,我注意到,当保存到数据库的xml字符串是非ASCII Unicode字符或之后带有非ASCII Unicode字符时,就会发生这种行为


输入从钩子自动输入到Android函数中。因为所有的东西都是在Android上以非标准配置运行的,所以要准确地了解到底发生了什么,调试有点困难。我希望Java字符串可能会有一些明显的答案。

我从未弄清这一点,但我确实通过修改escapeXml函数以使用正确的XML编码器org.apache.commons.lang库来解决了我的问题。我不知道这会有什么不同,但确实如此,现在xml字符串已经正确构造。

在某些情况下,具体是哪种情况?一个可复制的例子总是很理想的,为什么不使用XMLAPI呢?这通常比自己处理好得多。不应该输入吗?@JonSkeet,我也有同样的想法。这实际上是来自一个名为Introspy的OSS项目的代码@Pshemo,是的,为了可读性,我更改了一些名称,但是我忘了更改s。除非使用反射来更改字符串文字,否则任何东西都不能更改您正在追加的事实,我非常怀疑这一点。你所看到的行为一定是来自其他地方或其他原因。