この形式のJavaでSAXパーサーを使用してXMLファイルを解析したい:
<Deals>
<Deal>
<id> 10</id>
<title> title </title>
<city>
<id> 1 </id>
...
</city>
</Deal>
...
</Deals>
Deal ノードの id 要素と city ノードの id 要素を区別するのに問題があります。
あなたができることの1つは(私はそれを見て使用しました-それが最も効率的または効果的な方法であるかどうかはわかりませんが、機能します)、パーサーでいくつかの状態を維持することです。ドキュメント内の現在位置を示す状態、またはいくつかのブール値フラグ。たとえば、次のような場合があります。
boolean inDeals = false;
boolean inDeal = false;
boolean inCity = false;
次に、startElement コールバックで、開始タグが の場合はtrueDeals
に設定inDeals
します。Deal
と についても同様ですcity
。endElement コールバックで、逆の処理を行います (たとえば、終了タグ ==を false に戻します) Deals
。inDeals
あなたの文字メソッド、またはタグを処理している方法では、その時点でのパーサーの状態に基づいて処理してください。例えば:
if(inDeal) {
if(inCity) {
cityId = /*the characters*/;
} else dealId = /*the characters*/;
}