0

以下のような xml ファイルを解析しているときに、特定の ID の電話番号のリストを取得したいと考えています。これを行うために Digester を使用しています。しかし、call メソッドまたは createobjects を追加する方法がわかりません。誰か助けてくださいthis.My xml ファイルには数千のタイプが含まれています

<?xml version='1.0' encoding='utf-8'?>
<address-book>
<contact type="individual">
    <id>50</id>
    <city>New York</city>
    <province>NY</province>
    <postalcode>10013</postalcode>
    <country>USA</country>
<address>
    <telephone>1-212-345-6789</telephone>
<telephone>1-212-345-6789</telephone>
<telephone>1-212-345-6789</telephone>
<telephone>1-212-345-6789</telephone>
</address>
</contact>
<contact type="business">
    <id>52</id>
    <city>Zagreb</city>
    <province></province>
    <postalcode>10000</postalcode>
    <country>Croatia</country>
<address>
    <telephone>1-212-345-6789</telephone>
<telephone>1-212-345-6789</telephone>
<telephone>1-212-345-6789</telephone>
<telephone>1-212-345-6789</telephone>
</address>
</contact>

また、必要な ID を取得したときに解析を停止するにはどうすればよいですか。

4

1 に答える 1

0

問題は apache-commons-digester の使用に固有のものでしたが、これは、関数の XML ファミリで既に利用可能なライブラリのホスト、つまり XPath 検索と組み合わせた SAX パーサーによって解決できます。データを総当たり攻撃する代わりに、検索対象がわかっている場合は、XPath クエリでデータを比較的効率的に見つけることができます。それ以外の場合、インデックス作成やその他の目的でデータのセット全体をトラバースする場合は、単純な SAX パーサーを使用して要素をループし (おそらく //MyElement タイプの XPath クエリを介して)、インスタンスごとに値を に渡すことをお勧めします。インデックス作成またはその他の操作のための関数。apache-commons-digester は、必要なものに対して過度に複雑であったり、遅い場合があります。

于 2013-02-25T01:41:05.130 に答える