0

XML 解析は初めてですが、php と html は初めてではありません。次の XML 構造を解析する必要があります。

<er_data service="pl">
    <manufacturer_item>
        <item_id></item_id>
        <model></model>
        <manufacturer></manufacturer>
        <product_name></product_name>
        <description></description>
        <datasheeturl/>
        <image_url/>
        <map></map>
    </manufacturer_item>
    <dealers>
        <dealer id="111">
            <dealer_logo>http:/source.com/images/vendors/90x60/111.gif</dealer_logo>
            <dealer_name></dealer_name>
            <dealer_url></dealer_url>
        </dealer>
        <dealer id="222">
            <dealer_logo>http:/source.com/images/vendors/90x60/222.gif</dealer_logo>
            <dealer_name></dealer_name>
            <dealer_url></dealer_url>
        </dealer>
    </dealers>
    <dealer_item>
        <dealer_id>111</dealer_id>
        <dealer_sku></dealer_sku>
        <model></model>
        <manufacturer></manufacturer>
        <name></name>
        <price></price>
        <availability></availability>
        <image_url></image_url>
        <buy_url>http://source.com/c/?nVID=111&rsSku=321321</buy_url>
    </dealer_item>
    <dealer_item>
        <dealer_id>222</dealer_id>
        <dealer_sku></dealer_sku>
        <model></model>
        <manufacturer></manufacturer>
        <name></name>
        <price></price>
        <availability></availability>
        <image_url></image_url>
        <buy_url>http://source.com/c/?nVID=222&rsSku=654654</buy_url>
    </dealer_item>
    <loggingpixel></loggingpixel>
</er_data>

次のようにhtmlを出力するforeachを作成します。

<tr>
    <td><img src=$dealer_logo></td>
<td><a href=$buy_url>Buy Online</a></td>
</tr>

簡潔にするために、私が試したことをすべて載せているわけではありません。メーカー品は1点となり、定数となります。複数のディーラー ID があり、各ディーラーは複数の deal_item を持つことができますが、常に少なくとも 1 つ存在します。必要なものを取得するために使用する構成がわかりません。ディーラーのロゴはディーラーから来て、購入の URL はディーラーのアイテムから来ます。ロゴ URL にはディーラー ID 番号が含まれていることに注意してください。

簡潔にするために、私が試したすべての初心者向けのものは表示しません。基本的に、読み取りとループには次のような構造を使用しています。

$retailers = simplexml_load_file("http://source.com/xml.asp");

foreach ($retailers->dealer_items as $storeinfo):
endforeach;

どんな助けでも大歓迎です!XML が適切にインデントされていません。Karen edit MrCode- まだ何も得られません。XML ファイルは他の誰かの管理下にありますが、Safari で開いてディスクに保存すると & が表示されます。また、フィードする URL を & に変更しましたが、まだ何もありません。これは私が現在持っているコードとまったく同じです:

<table class="gridtable">
<tr>
    <th>Retailer</th>
    <th>In Stock</th>
    <th></th>
    </tr>

<?php   
$retailers = simplexml_load_string('http://pg.links.channelintelligence.com/pages/plxml.asp?sSKU=633472600401&amp;nRGID=4938');
$dealers = array();
foreach($retailers->dealers->dealer as $dealer)
{
$dealers[(int)$dealer->attributes()->id] = array('dealer_logo' => (string)$dealer->dealer_logo);
}
?>

<?php foreach($retailers->dealer_item as $item): ?>
<tr>
<td><img src="<?php echo $dealers[(int)$item->dealer_id]['dealer_logo']; ?>"></td>
<td>Yes</td>
<td><a href="<?php echo (string)$item->buy_url; ?>">Buy Online</a></td>
</tr>
<?php endforeach; ?>

</table>

編集 (フォーラムで書式設定に苦労しています) *XML ファイルは他人の管理下にありますが、Safari で開いてディスクに保存すると、エンコードされたバージョンのアンパサンドが表示されます。

編集してエラーを投稿する: [Mon Aug 12 20:32:06 2013] [error] [client 204.181.48.224] PHP 警告: simplexml_load_string(): エンティティ: 1 行目: パーサー エラー: 開始タグが必要です。'<' が見つかりません/home/sites/staging.clearblueeasy.com/website/m/advanced-digital-ovulation-test-buyonline.php 32 行目 [2013 年 8 月 12 日月曜日 20:32:06] [エラー] [クライアント 204.181.48.224] PHP警告: simplexml_load_string(): http://pg.links.channelintelligence.com/pages/plxml.asp?nrgid=4938&ssku=63347260/home/sites/staging.clearblueeasy.com/website/m/advanced-digital-ovulation-test-buyonline.php の 32 行目 [2013 年 8 月 12 日月曜日 20:32:06] [エラー] [クライアント 204.181.48.224] PHP 警告: simplexml_load_string(): ^ /home/sites/staging.clearblueeasy.com/website/m/advanced-digital-ovulation-test-buyonline.php の 32 行目 [Mon Aug 12 20:32:06 2013] [エラー] [クライアント 204.181.48.224] PHP 警告: 34 行目の /home/sites/staging.clearblueeasy.com/website/m/advanced-digital-ovulation-test-buyonline.php の foreach() に無効な引数が指定されました [Mon 8 月 12 日 20:32:06 2013] [エラー] [クライアント 204.181.48.224] PHP 警告: /home/sites/staging.clearblueeasy.com/website/m/advanced-digital-ovulation- の foreach() に無効な引数が指定されました40行目のtest-buyonline.php

4

1 に答える 1