YML файл:
<?xml version="1.0" encoding="UTF-8"?> <yml_catalog date="2019-11-01 17:22"> <shop> <name>BestSeller</name> <company>Tne Best inc.</company> <url>http://best.seller.ru</url> <currencies> <currency id="RUR" rate="1"/> <currency id="USD" rate="60"/> </currencies> <categories> <category id="1">Бытовая техника</category> <category id="10" parentId="1">Мелкая техника для кухни</category> </categories> <delivery-options> <option cost="200" days="1"/> </delivery-options> <offers> <offer id="9012"> <name>Мороженица Brand 3811</name> <url>http://best.seller.ru/product_page.asp?pid=12345</url> <price>8990</price> <currencyId>RUR</currencyId> <categoryId>10</categoryId> <delivery>true</delivery> <delivery-options> <option cost="300" days="1" order-before="18"/> </delivery-options> <param name="Цвет">белый</param> <weight>3.6</weight> <dimensions>20.1/20.551/22.5</dimensions> </offer> </offers> <gifts> <!-- подарки не из прайс‑листа --> </gifts> <promos> <!-- промоакции --> </promos> </shop> </yml_catalog>Это стандартный пример от Яндекса.
Теперь код разбора:
// папка с объявлениями $xml_file="data//ads.yml"; // считываем страницу с xml данными $page_xml = file_get_contents($xml_file); // создаем xml документ $ads = new SimpleXMLElement($page_xml); echo "Название магазина: ".$ads->shop->name."<br>"; echo "company: ".$ads->shop->company."<br>"; echo "Сайт: ".$ads->shop->url."<br>"; echo "Валюта магазина: ".$ads->shop->currencies->currency['id']."<br>"; //print_r($ads->shop); // считываем данные foreach($ads->shop->offers as $data) { //print_r($data); echo "ID товара: ".$data->offer['id']."<br>"; echo "Название: ".$data->offer->name."<br>"; echo "Страница товара: ".$data->offer->url."<br>"; echo "Цена: ".$data->offer->price."<br>"; echo "Валюта: ".$data->offer->currencyId."<br>"; echo "categoryId: ".$data->offer->categoryId."<br>"; echo "Цена доставки: ".$data->offer->{"delivery-options"}->option['cost']."<br>"; }Из примера можно увидеть что разбор атрибутов тэгов делается таким образом:
/* xml <yml_catalog date="2019-11-01 17:22"> <shop> <currencies> <currency id="RUR" rate="1"/> */ /*php код*/ $ads->shop->currencies->currency['id'] $ads->shop->currencies->currency['rate']если значение тэга содержит дефис тогда код будет:
/* xml <offers> <offer id="9012"> <delivery-options> <option cost="300" days="1" order-before="18"/> </delivery-options> */ /*php код*/ echo "Цена доставки: ".$data->offer->{"delivery-options"}->option['cost']."<br>";