2015-03-03 2 views
0

XML-файл содержит около 10 000 продуктов с различным атрибутом cat_top. Мне нужно разбирать только те продукты, которые относятся к категории «ПК».Отображать продукты только с определенным атрибутом с помощью XML

<product id="6055551" cat="Motherboards" cat_top="PC"> 
</product> 
<product id="6666691" cat="Motherboards" cat_top="PC"> 
</product> 
<product id="6044391" cat="Motherboards" cat_top="PC"> 
</product> 
<product id="6041391" cat="iPad" cat_top="Apple"> 
</product> 
<product id="6041391" cat="iPhone" cat_top="Apple"> 
</product> 
<product id="6423391" cat="iPad" cat_top="Apple"> 
</product> 
<product id="6067391" cat="iPhone" cat_top="Apple"> 
</product> 

Это мой код:

<?php 

if (file_exists('xml_im.xml')) { 
    $xml = simplexml_load_file('xml_im.xml'); 
} else { 
    exit('Не удалось открыть файл xml_im.xml.'); 
}  

foreach($xml->product as $product) { 

    $name = $product['id']; 
    $cat = $product['cat']; 
    echo $name, " " , $cat , " "; 

} 
?> 

ответ

0

Как насчет просто продолжить цикл, если он не является «PC»:

<?php 

if (file_exists('xml_im.xml')) { 
    $xml = simplexml_load_file('xml_im.xml'); 
} else { 
    exit('Не удалось открыть файл xml_im.xml.'); 
} 

foreach ($xml->product as $product) { 

    $cat_top = (string)$product['cat_top']; 
    if ($cat_top !== 'PC') continue; 

    $name = $product['id']; 
    $cat = $product['cat']; 
    echo $name, " ", $cat, " "; 

} 
?> 
+0

спасибо! Он работает так, как я хочу :) – Shevko

2

Вы можете использовать XPath для получения массива <product> сек этого матча:

$xml->xpath('//product[@cat_top = "PC"]') 

Если вы хотите, чтобы перебрать их, как вы в этом вопросе вы можете:

foreach ($xml->xpath('//product[@cat_top = "PC"]') as $product) { 
    echo "{$product['id']} {$product['cat']}"; 
} 
+0

Благодарим Вас за оперативную помощь! – Shevko

Смежные вопросы