1

我正在使用 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 以在带有前导空格的文本周围添加双引号。

4

1 回答 1

1

XmlPullParser.next() 和 XmlPullParser.getText() 可以以不可预知的方式分几部分返回内容。在您的情况下,如果它在 xpp.next() 上迭代而不连接各个部分,则可能第一个空格字符作为第一部分返回并由您的程序静默删除。算法应该更多的是:

String str = "";
while (xpp.next() == XmlPullParser.TEXT) {
    str += xpp.getText();
}
return str;
于 2012-08-17T22:27:00.070 回答