我正在使用XmlPullParser解析一些自定义XML。我像这样打开XML文件...

XmlPullParser xpp = activity.getResources().getXml(R.xml.myXML);


然后我阅读以下XML节点

<L>  ####</L>


使用代码

String str = "";
if( xpp.next() == XmlPullParser.TEXT )
    str = xpp.getText();
return str;


而不是返回

'  ####'


我懂了

' ####'


(为清晰起见,我添加了单引号。)注意缺少前导空格。

看来getText正在剥离领先空间?当XML不包含前导空格时,我的代码将按预期工作。

我找不到XMLPullParser的任何属性,允许我告诉它保留所有空白。我也不能更改XML,以在前导空格周围的文本周围添加双引号。

最佳答案

XmlPullParser.next()和XmlPullParser.getText()会以一种无法预测的方式分几部分返回内容。在您的情况下,如果程序在xpp.next()上进行迭代而不将其串联在一起,则可能是第一个空格char作为第一段返回并被程序无提示地删除。该算法应更多是:

String str = "";
while (xpp.next() == XmlPullParser.TEXT) {
    str += xpp.getText();
}
return str;

关于java - 可以将XmlPullParser配置为不忽略空格吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12012122/

10-09 13:38