android中的DefaultHandler类不会从xml读取整个字符串

时间:2011-02-19 04:04:09

标签: java android string polyline

我正在扩展DefaultHandler来解析xml。 我正在解析这个页面: http://maps.googleapis.com/maps/api/directions/xml?origin=staten%20island&destination=florida&sensor=false

我得到所有折线>点。 除了一个特定的字符串外,一切正常。 我正在重写DefaultHandler中的characters方法,如下所示:

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型CdM WnnBjeEtI | PlIxNxHhMjLdQ | dAlwA ~CxfEfOxRlK O〜PdUvOlTnHdJbYl \ fVlW q@~p@~gA gAfKzKbP Rpa@bi@|wAnuBjZ|c@rD~F JJP | I | Qzr @ ~AbKpS Ĵ〜OvGdKnPhUbMpN〜{@〜{@ tLhMlZfZnI〜ILH @ NH @ NN O~GbJjEpGpErHbIfPpDxIvDpKzRvp@rE|MrF|MhKpRbF IR_ @乔@ LtS~MzYp[bw@hEvJ|F LbLvQzHrJfv @ FZ @ nUxXh AtoAlGzIl AbwAvMfRx_AnmAlr @ Z} @jQtTfJxJv] H] buDfqDjFrGbI 〜K | E〜HpFnKlFfLzB | FjElMhCvI | T w@vDnPzChPx@vFdBhOrh@xlFbNptAvAdMnB MnEjT〜EvQhF O~F NjCjFhEtHlEbHbk @ BX @ FWB ^ nSvXnSrYxGpKjDvGnDxHnHdR〜_A | gCdNz] tEtMfs @ zlBbHhQ | jDzoH | R @ LZA | Yvk @ xClFvJxRhInOhP {{ 1}} @Ĵ| AFY @ \hJ|PbIvOxB|E|m@plA~LpUzs@dwAvj@hfA|D|IrDrJzlAriDhFfR~Uv~@h ^了Dj hBvN | BBO | DL]

这就是DefaultHandler返回的内容:

qhitFxpifMn @ T @ vA型{DtFzX|BtOpArLvSjcCv@dNJjEGbFDdDVnElAnIx@xDnC~JbApFb@fDbKb~@ WnnBjeEtI | PlIxNxHhMjLdQ | dAlwA CdM O〜PdUvOlTnHdJbYl \ fVlW ~CxfEfOxRlK gAfKzKbP q@~p@~gA JJP | I | Qzr @ Rpa@bi@|wAnuBjZ|c@rD~F Ĵ〜OvGdKnPhUbMpN〜{@〜{@ tLhMlZfZnI〜ILH @ NH @ NN ~AbKpS IR_ @乔@ O~GbJjEpGpErHbIfPpDxIvDpKzRvp@rE|MrF|MhKpRbF LbLvQzHrJfv @ FZ @ nUxXh`Ato

它停在角色282处,我不知道为什么。

1 个答案:

答案 0 :(得分:4)

来自ContentHandler接口的文档,由DefaultHandler实现:

  

SAX解析器可以在一个块中返回所有连续的字符数据,或者它们可以将它分成几个块

您需要在StringBuilder中聚合多次调用此方法的数据,然后在endElement调用中处理该数据。