2015-03-03 131 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

相关问题