使用XML仅显示具有特定属性的产品
问题描述:
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 , " ";
}
?>
答
你怎么样只是继续循环,如果它不是一个“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, " ";
}
?>
答
您可以使用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
谢谢!它工作,因为我想:) – Shevko 2015-03-03 14:33:51