SAX を使用して XML ドキュメントを解析しようとしています。XML ドキュメントは次のようになります。
<users>
<row Id="-1" DisplayName="Apple">
<row Id="1" DisplayName="Banana">
<row Id="2" DisplayName="Orange">
</users>
これは、row
要素の解析を担当するパーサー クラスの抜粋です。
class SAXParser extends DefaultHandler {
static int i = 0;
ArrayList<ArrayList<String>> ar = new ArrayList<ArrayList<String>>();
ArrayList<String> id = new ArrayList<String>();
public void startElement(String uri, String localName,
String qName, Attributes atts) {
if (qName.equals("row")) {
int idx = 0;
id.add(idx, atts.getValue(0));
idx++;
id.add(idx, atts.getValue(3));
ar.add(i, id);
i++;
//idx = 0;
}
}
}
プログラムを実行すると、ar
属性で次の結果が得られますが、これは私が望んでいたものではありません。
[2,Orange,1,Banana,-1,Apple], [2,Orange,1,Banana,-1,Apple],
[2,Orange,1,Banana,-1,Apple], [2,Orange,1,Banana,-1,Apple]
私が欲しいのは、次のように属性にId
,DisplayName
のペアを含めることです。ar
[-1, Apple], [1, Banana], [2, Orange]
私は何を間違えましたか?どうすれば望ましい結果を得ることができますか?