Java XML字符串文本突然终止
我有一些Java代码如下所示:Java XML字符串文本突然终止,java,xml,string,Java,Xml,String,我有一些Java代码如下所示: String xml = "<string>" + escapeXml(input) + "</string>"; protected String escapeXml(String input) { return input.replaceAll("&", "&") .replaceAll("'", "'") .replaceAll("
String xml = "<string>" + escapeXml(input) + "</string>";
protected String escapeXml(String input) {
return input.replaceAll("&", "&")
.replaceAll("'", "'")
.replaceAll("\"", """)
.replaceAll("<", "<")
.replaceAll(">", ">")
}
输入是一个变量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。除非使用反射来更改字符串文字,否则任何东西都不能更改您正在追加的事实,我非常怀疑这一点。你所看到的行为一定是来自其他地方或其他原因。