2015-03-03 40 views
0

XML文件包含具有不同'cat_top'屬性的大約10 000種產品。 我只需要解析屬於「PC」類別的產品。使用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 2015-03-03 14:33:51

2

您可以使用XPath來獲得<product> s表示比賽的數組:

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

如果你通過他們想環路你在這個問題中,你可以這樣做:

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

謝謝你的工作有所幫助! – Shevko 2015-03-03 14:39:20

相關問題