2012-04-26 10 views
0

非常に長いテキストを含むフィールドが解析されているxmlがありますが、何らかの理由でパーサによってドロップされます。私は文字列バッファまたはビルダーを使用する必要がありますそれらの文字を取得します。私が望むのは、タグだけで価値を抽出することです。Android SAX XMLパーサー(StringまたはStringbuilderまたはStringbuffer)

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

    if (elementOn) { 
    // its not reading element value, though tag is read. 
     elementValue = new String(ch, start, length); 
     elementOn = false; 
    } 
} 

これはテキストです:

<description> 
    <![CDATA[ 
    Former CPI MLA Manish Kunjam, who returned on Thursday after, theis is a long long text very long that its being dropped.......so what can be done................................................................................................... 
    ]]> 
</description> 

おかげPLZ、はい.....

答えて

2

私を導くテキストはチャンクで読み取ることができ、あなただけ読んですることができるので、のStringBuilderを使用しますこのようなコードの最初の空行。あなたはStringBuilderのをリセットすることができますdocumentation

を参照してくださいあなたはstartElement

private final StringBuilder mStringBuilder = new StringBuilder(); 
private String elementValue = null; 
private boolean elementOn = false; 

public final void characters(char[] ch, int start, int length) throws SAXException { 
    if (elementOn) 
     mStringBuilder.append(ch, start, length); 
} 

public final void startElement(String uri, String localName, String qName, Attributes attributes) 
     throws SAXException { 
    mStringBuilder.setLength(0); 
    if (someCondition) elementOn = true; 
} 

public void endElement(String uri, String localName, String qName) throws SAXException { 
    elementValue = mStringBuilder.toString().trim(); 
    elementOn = false; 
} 

を打つたびは、パーサーは、以下の

<description> -> startElement("description"), reset StringBuilder 
    <![CDATA[ -> characters(""), appended to (empty) String 
    Former CPI.. -> characters("Former.."), appended 
    ]]>   -> characters(""), appended 
</description> -> endElement("description"), read text here 
<description> -> startElement("description"), reset StringBuilder all starts again 
+0

はいについて行いますが、これは私にすべてのタグを含む長い文字列を与えるだろう...私は個々のタグだけを得ることができる方法はありますか? – Programmer

+0

新しい要素が始まるたびにStringBuilderをリセットするので、1つの要素の内容だけを与えるべきです。 – zapl

関連する問題