Я новичок в разборе XML, но не новичок в php и html. Мне нужно разобрать следующую структуру XML:XML-синтаксический анализ и структура foreach
<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, как это:
<tr>
<td><img src=$dealer_logo></td>
<td><a href=$buy_url>Buy Online</a></td>
</tr>
Для краткости я не класть все вещи, которые я пробовал. Будет один элемент производителя, и он будет постоянным. Будет несколько идентификаторов дилера, и у каждого дилера может быть несколько идентификаторов дилера, но всегда будет иметь хотя бы один. Я не знаю, какие конструкции использовать, чтобы получить то, что мне нужно. Дилер_logo выходит из дилеров, а buy_url выходит из дилера. Обратите внимание, что URL-адрес логотипа будет содержать номер идентификатора продавца.
Для краткости я не буду показывать все новички, которые я пробовал. В основном, я использую структуру, как это для чтения и зацикливание:
$retailers = simplexml_load_file("http://source.com/xml.asp");
foreach ($retailers->dealer_items as $storeinfo):
endforeach;
Любая помощь будет принята с благодарностью! Извините, что XML не имеет отступов должным образом. Karen Редактировать 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&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>
редактировать (strugging с форматированием на форуме) * Файл XML находится под чьим-то контролем, но когда я открываю его в Safari и сохранить его на диске, я вижу закодированная версия амперсанда.
Редактировать записи: [Mon Aug 12 20:32:06 2013] [error] [client 204.181.48.224] PHP Предупреждение: simplexml_load_string(): Entity: строка 1: ошибка парсера: ожидается начальный тег, < 'не найдена в /home/sites/staging.clearblueeasy.com/website/m/advanced-digital-ovulation-test-buyonline.php в строке 32 [пн 12 авг 20:32:06 2013] [ошибка] [ клиент 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 [Пн Авг 12 20: 32:06 2013] [error] [client 204.181.48.224] PHP Предупреждение: simplexml_load_string():^в /home/sites/staging.clearblueeasy.com/website/m/advanced-digital-ovulation-test-buyonline.php on строка 32 [Mon Aug 12 20:32:06 2013] [error] [client 204.181.48.224] PHP Предупреждение: неверный аргумент, предоставленный foreach() в /home/sites/staging.clearblueeasy.com/website/m/advanced-digital -ovulation-test-buyonline.php on line 34 [Mon Aug 12 20:32:06 2013] [error] [client 204.181.48.224] PHP Предупреждение: неверный аргумент для foreach() в/home/sites/staging. clearblueeasy.com/website/m/advanced-digital-ovulation-test-buyonline.php в строке 40
Так в чем проблема? Вы знаете, как делать. Вы знаете, как пройти SimpleXml. Просто получите нужные данные и напишите в свои строки HTML. – Gordon
'$ retailers-> dealer_items' должен быть' $ ритейлерами-> dealer_item' оттуда вы обычно можете прочитать остальное, в чем проблема? – Prix