I have a PHP webservice that returns an XML output, and one of the Tag contains a multiline " " String data.
My problem is, all " " 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 " " 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 " " 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!
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('
');
} 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 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.