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 に答える