XML文件包含大约10 000种具有不同“cat_top”属性的产品。 我只需要解析属于“PC”类别的产品。
<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 :(得分:2)
您可以使用xpath获取匹配的<product>
数组:
$xml->xpath('//product[@cat_top = "PC"]')
如果你想像在问题中那样循环浏览它们,你可以这样做:
foreach ($xml->xpath('//product[@cat_top = "PC"]') as $product) {
echo "{$product['id']} {$product['cat']}";
}
答案 1 :(得分:0)
如果它不是PC&#39;
,那么你可以继续循环<?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, " ";
}
?>