我有一个返回XML输出的PHP Web服务,其中一个Tag包含多行“\ n”字符串数据。
我的问题是,在我通过默认的SAX解析器传递XML数据后,所有“\ n”都被删除了,但我真的不希望这种情况发生!我想保留所有新行“\ n”字符 在标签内,以便我可以提取它并在简单的TextView或EditText中显示它们。
我尝试了一些解决方法,例如用“& x#dA”代替“\ n”;或其他什么,但我不能让它与我的PHP服务器一起正常工作,我觉得它不是一个优雅的解决方案。
有没有人有一个工作示例或教程,你可以指点我学习如何解决这个问题?我在这里读到另一篇文章,这是thsi默认SAX解析器实现的“模仿”,但是我不介意使用第三方解析器,如果那会解决它,但我需要一些指导......
谢谢!
答案 0 :(得分:1)
我和你有同样的问题。我发现了this solution类似的问题并将其改编为此问题。
StringBuffer sb = new StringBuffer(str.length());
CharacterIterator it = new StringCharacterIterator(str);
for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
switch (ch) {
case '\\':
char next = str.charAt(it.getIndex() + 1);
if (next == 'n') {
// we've found a newline character
sb.append('\n');
} else {
sb.append(ch);
}
break;
case 'n':
char prev = str.charAt(it.getIndex() - 1);
if (prev == '\\') {
// don't append the 'n', we did that above
} else {
sb.append(ch);
}
break;
default:
sb.append(ch);
break;
}
}
str = sb.toString();
str
是包含\n
个字符的字符串。这个问题可能有一个更优雅的解决方案,但我对java和Android都很新,找不到。