2011-02-06 20 views
2

多くのRESTベースのAPI呼び出しでは、nextURLというこのパラメータを使用して、次のURLを照会できます。これは、あなたたちはこれを読んでくださいどのように一般的には。ルート要素で、通常は(または次のものであってもよい)XML内のルート要素のみを読み取る

?標準のXMLパーサーを使用している場合は、XML全体を読み込んでロードし、次にgetElementsByTagでnextURLを読み込みます。もっと良い仕事がありますか?もちろん、XML全体を読むことは、時間とメモリを無駄にすることになります。

編集:例のXMLは、私は全体のXMLを読み込むことなく、新しいsince_dateをキャプチャする必要が

<result pubisher="xyz" nextURL="http://actualurl?since_date=<newdate>"> 
<element>adfsaf</element> 
.. 
</result> 

ようなものになるだろう。

答えて

3

Python:ElementTree iterparse methodを使用できます。必要なデータが属性に含まれていれば、開始イベントを取得した時点で解析されます。要素のテキストまたは末尾にある場合は、終了イベントまで待つ必要があります。あなたの質問を編集してXMLがどのように見えるかを見せて、例を使って "あるいは次の質問に答えよう"と説明するとよいでしょう。

0

用語「標準XMLパーサは」領土の多くをカバーし、そんなに私はあなたが彼らの行動を一般化できるとは思わないように。例えば、標準のDOMパーサーはツリーベースであり、XML全体をメモリに読み込みますが、SAXパーサー(そしてStAXも同様です)は、アプリが進めたいと望むように進んでいくわけではありません。後者のSAXやStAXパーサのように聞こえるのは、あなたが必要とするものです。

編集:SAXとStAXの行動との間の差に以下KitsuneYMGさんのコメントを必ずお読みください。

+2

SAXはxmlを読み取り、さまざまなイベント/コールバックを送信する必要があります。 StAXはイテレータアプローチ(例:> xmlin.next())の方が多く、いつでも放棄するのが簡単です。 Java標準のSAXリーダーは、IIRCを放棄するための例外を必要とします – KitsuneYMG

+0

ありがとう、私はこれを知らなかったし、情報を感謝します! –

関連する問題