0

ファイルからxmlタグの内容を取得するためにsaxparserを使用しています。長いデータではないxmlではすべて正しく機能します。ただし、特定の位置に配置されると、characters()イベントは切り捨てられたch []を受け取り、2回トリガーされます。たとえば、1234567890の場合、2回受信され、次の例のように値が切り捨てられます。char配列またはメモリをクリアする方法は?

id  1234567890
name myName1
id  1234567890
name myName2
...
(error)
id 1234567
id 890
name myName3

コード:

private StringBuffer buf = new StringBuffer(2048);

            @Override
            public void characters(char ch[], int start, int length) throws SAXException {  

            if(this.v_Id){

                buf.append(ch, start, length);

                myParsedXMLDataSet.setId(buf.toString());

                Log.d("id", buf.toString());

                buf.delete(0, buf.length());

            }
4

1 に答える 1

3

characters()同じ要素に対して複数回呼び出すことができます(ドキュメントを参照)。ほとんどの場合はそうですが、一度だけ呼び出されると思い込まないでください。が呼び出されるたびにバッファに追加し、が呼び出されcharacters()たときに値を格納しますendElement()

于 2012-07-03T12:09:04.397 に答える