1

iphoneSDKでXMLパーサーを使用するとパフォーマンスの問題が発生します。LibXMLパーサーとNSXMLParserを直接使用しようとしましたが、同じ結果になりました。今、私は構文解析のパフォーマンスを改善できるものを探しています。ネストされた要素に属性を移動すると、処理が速くなりますか?

次のようなXMLソースファイルを取得しました。

<イベント>
 <Event Name = "Test1" Description = "Desc" Cat = "Cate" Date = "20/01/2010" ImageURL = "" />

</イベント>

ネストされたツリーを作成する必要がありますか?次のような?パフォーマンスは向上しますか?

<イベント>
 <イベント>
  <Name> Test1 </ Name>
  <説明>説明</説明>
  <日付>2010年1月20日</日付>
  <ImageURL> http://remoteurl.../foo.png </ ImageURL>
 </イベント>
</イベント>

たくさん、パオロ

4

1 に答える 1

1

私はあなたが何を意味するのか完全にはわかりません。私はあなたを正しく理解していないかもしれませんが、これが私のプログラムで行ったことです。

次のようなファイルがあるとします。

<document>

 <person>
  <name>bob</name>
  <phone>555-5555</phone>
   <vehicle>
    <color>blue</color>
    <type>truck</truck>
   </vehicle>
 </person>

 <person>
  <name>jan</name>
  <phone>444-5555</phone>
   <vehicle>
    <color>red</color>
    <type>car</truck>
   </vehicle>
 </person>

</document>

人物タグをヒットしたら、人物オブジェクトを作成すると仮定しましょう。その人物オブジェクトを作成し、人物タグ内の xml を解析させます。これを行うには、人物オブジェクトをオブジェクトの新しいデリゲートにします。person オブジェクトが person の終了タグを検出すると、デリゲートをリセットできます。また、元のデリゲートで同じメソッドを再度呼び出しました。私はここからこのアイデアを得ました。車両タグについても同じことができます。私が今運転していることを理解していただけると思います。

これにより効率が向上すると私が考える理由は、要素のスタックを作成し、スタックにステップバックするのではなく (たとえば、文書内で自分がその前にあるかどうかを確認する人を見るときのように) ということです。人物タグを見たときに推測できると思いますが、安全を確保したい場合は確認が重要です. また、この方法はよりモジュール化されています。文字列比較の削減により、パフォーマンスが向上すると思います。コーディングもよりエレガントです。

これがあなたが探しているような答えでない場合は、少し詳細を提供していただけますか. ありがとう、幸せなコーディング。

于 2010-02-09T07:24:38.067 に答える