带有换行符字符样本的Android SAX Parser?

时间:2011-04-10 17:39:10

标签: php android xml newline sax

我有一个返回XML输出的PHP Web服务,其中一个Tag包含多行“\ n”字符串数据。

我的问题是,在我通过默认的SAX解析器传递XML数据后,所有“\ n”都被删除了,但我真的不希望这种情况发生!我想保留所有新行“\ n”字符 在标签内,以便我可以提取它并在简单的TextView或EditText中显示它们。

我尝试了一些解决方法,例如用“& x#dA”代替“\ n”;或其他什么,但我不能让它与我的PHP服务器一起正常工作,我觉得它不是一个优雅的解决方案。

有没有人有一个工作示例或教程,你可以指点我学习如何解决这个问题?我在这里读到另一篇文章,这是thsi默认SAX解析器实现的“模仿”,但是我不介意使用第三方解析器,如果那会解决它,但我需要一些指导......

谢谢!

1 个答案:

答案 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都很新,找不到。

相关问题