Android SAX Parser with newline character sample?

扶醉桌前 提交于 2019-12-13 19:06:01

问题


I have a PHP webservice that returns an XML output, and one of the Tag contains a multiline "\n" String data.

My problem is, all "\n" is being removed after I pass the XML data through the default SAX parser, but I really dont want this to happen! I want to retain all newline "\n" characters within the Tag so that I can extract it and display them in a simple TextView or EditText.

I tried a couple of workarounds like substituting the "\n" with "&x#dA;" or something, but I cant get it to work properly with my PHP server, and I feel its not an elegant solution.

Does anyone have a working example or tutorial you can point me to learn how to resolve this? I read in another post here that this is the "lmitation" of the implementation of thsi default SAX parser, but I dont mind using a third part parser if thats gonna solve it, but I will need some guidance...

Thanks!


回答1:


I had the same problem as you. I found this solution to a similar problem and adapted it to this one.

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();

Where str is your string with \n characters. There is probably a more elegant solution to this problem, but I am quite new to java and Android and couldn't find one.



来源:https://stackoverflow.com/questions/5613535/android-sax-parser-with-newline-character-sample

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!