1

XMLを解析するためにDefaultHandlerを拡張しています。このページを解析しています: http://maps.googleapis.com/maps/api/directions/xml?origin=staten%20island&destination=florida&sensor=false

すべてのポリライン>ポイントを取得しています。1 つの特定の文字列を除いて、すべて正常に動作します。次のように、DefaultHandler の文字メソッドをオーバーライドしています。

public void characters(char[] ch, int start, int length) throws SAXException {
if (currentElement) {
    Log.v("Length", length+"");
    currentValue = new String(ch, start, length);
    currentElement = false;
    }

}

文字列の長さが 660 文字の場合、長さは 282 を返します。これは文字列です:

qhitFxpifMn@t@vA CdMWnnBjeEtI|PlIxNxHhMjLdQ|dAlwA ~CxfEfOxRlKO~PdUvOlTnHdJbYl\fVlW q@~p@~gAgAfKzKbP Rpa@bi@|wAnuBjZ|c@rD~FJjP|I|Qzr@ ~AbKpSJ~OvGdKnPhUbMpN~{@~{@tLhMlZfZnI~Ilh@nh@nN O~GbJjEpGpErHbIfPpDxIvDpKzRvp@rE|MrF|MhKpRbFIr_@jo@ LtS~MzYp[bw@hEvJ|FLbLvQzHrJfv@fz@nUxXh AtoAlGzIlAbwAvMfRx_AnmAlr@z }@jQtTfJxJv]h]buDfqDjFrGbI~K|E~HpFnKlFfLzB|FjElMhCvI|T w@vDnPzChPx@vFdBhOrh@xlFbNptAvAdMnBMnEjT~EvQhF O~FNjCjFhEtHlEbHbk@bx@fWb^nSvXnSrYxGpKjDvGnDxHnHdR~_A|gCdNz]tEtMfs@zlBbHhQ|jDzoH|r@lzA|Yvk@xClFvJxRhInOhP \hJ|PbIvOxB|E|m@plA~LpUzs@dwAvj@hfA|D|IrDrJzlAriDhFfR~Uv~@h@j|Afy@ {DtFzX|BtOpArLvSjcCv@dNJjEGbFDdDVnElAnIx@xDnC~JbApFb@fDbKb~@Dj^hBvN|BbO|Dl]

そして、これは DefaultHandler が返すものです:

Qhitfxpifmn@t@ CdMva wnnbjeeti | plixnxhhmjldq | dalwa ~CxfEfOxRlKo〜pduvoltnhdjbyl \ fvlw q@~p@~gAgafkzkbp Rpa@bi@|wAnuBjZ|c@rD~Fjjp | i | qzr@ ~AbKpSj〜ovgdknphubmpn〜 {@nuxw@nir ni irbni buxh@ O~GbJjEpGpErHbIfPpDxIvDpKzRvp@rE|MrF|MhKpRbFnikni LtS~MzYp[bw@hEvJ|Fbuxh@nikni buxh

文字 282 で停止しますが、その理由はわかりません。

4

1 に答える 1

4

DefaultHandler によって実装されるContentHandlerインターフェースのドキュメントから:

SAX パーサーは、連続するすべての文字データを 1 つのチャンクで返すか、複数のチャンクに分割する場合があります。

StringBuilder でこのメソッドへの複数の呼び出しからのデータを集約し、endElement 呼び出しでそのデータを処理する必要があります。

于 2011-02-19T12:15:16.627 に答える