我正在使用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以在带有前导空格的文本周围添加双引号。
答案 0 :(得分:1)
XmlPullParser.next()和XmlPullParser.getText()可以以不可预测的方式返回多个部分的内容。在你的情况下,也许第一个空格字符作为第一个片段返回并且如果它在xpp.next()上迭代而没有连接片段,则由程序静默删除。该算法应该更多:
String str = "";
while (xpp.next() == XmlPullParser.TEXT) {
str += xpp.getText();
}
return str;