1

お得な情報を含むXMLフィードがあり、タイトルと画像を取得する必要があります。

私はxpathを使用していますが、これは例です:(/deals/deal/deal_title取引タイトルの場合) /deals/deal/deal_image(取引画像の場合)

問題は、一部の取引で取引画像がまったく設定されていないため、取引タイトルを取引画像にリンクすると、間違った画像が表示されることがあります。

問題を追跡するために、2つの別々の配列を作成しました。1つはタイトルを使用し、もう1つは画像を使用します。

問題の原因となる奇妙なことは、画像配列上で空のインスタンスが配列の最後に移動されることです。

たとえば、「dealtitle2」に画像がなく「dealtitle3」に画像があるとすると、「dealtitle3」の画像が「dealtitle2」に使用されます。

このリンクを使用して、私が作成したコードを確認してください:http: //pastebin.com/HEuTJQjZ

興味深い部分は以下から始まります:$doc = new DOMDocument();

基本的には、多くのxpathクエリを実行してタイトル、画像、価格などを取得し、それらをデータベースに追加します。

問題は、取引にタグが設定されていないため、次の値を使用する場合に始まります。

空のインスタンスをすべて魔法のように一番下に移動する方法がわかりません。Xpathは結果を注文することになっていないのですよね?

[]演算子を使用して特定の画像を取得しようとしましたが、結果が間違った方法で並べ替えられているため、役に立ちません。

フィードの例:http ://www.clickbanner.gr/xml/?xml_type = departments&affiliate_ID = 14063

編集:

本当の問題は、xpathが結果をドキュメントの順序で並べ替えず、予想される順序を変更することです。これはバグか何かですか、それとも結果をドキュメントの順序で並べ替える方法はありますか?参照:XPathクエリ結果の順序

前もって感謝します。

4

2 に答える 2

1

$k間隔内のの値について、次の2つのXPath式を評価します[1, count(/deals/deal)]

/deals/deal[$k]/deal_title

deals/deal[$k]/deal_image

このようにして、画像が選択されたかどうかがわかります。

たとえば、count(/deals/deal)が3の場合、次のXPath式を評価します

  • /deals/deal[1]/deal_titledeals/deal[1]/deal_image

  • /deals/deal[2]/deal_titledeals/deal[2]/deal_image

  • /deals/deal[3]/deal_titledeals/deal[3]/deal_image

于 2012-07-28T21:22:21.587 に答える
0

私はあなたがこのように試みるべきだと思います:

  1. ウォークスルー/deal/deal_idタグの値
  2. タグのペアを検索する場合:/deal[/deal_id="$deal_id"]/deal_titleおよび/deal[/deal_id="$deal_id"]/deal_image(実際のdeal_idを使用)の代わりに$deal_id

取引ごとにdeal_titleとdeal_imageのペアを取得し、それぞれが正しく一致します

于 2012-07-28T20:35:23.167 に答える