使用simplexml_load_file方法,我试图检索并显示所有名称元素的文本(来自下面的XML文件),这些文本具有名为" type'的属性。平板电脑的价值。'此foreach循环仅显示第一个元素的值。有什么建议?谢谢!
$XMLproducts = simplexml_load_file("products.xml");
foreach($XMLproducts->product->attributes() as $a => $b) {
$i = 0;
if ($b == "Tablet") {
echo $XMLproducts->product[$i]->name;
echo "<br>";
}
}
这是XML文件:
<products>
<product type="Desktop">
<name>Desktop 1</name>
</product>
<product type="Tablet">
<name>Ipad 1</name>
</product>
<product type="Desktop">
<name>Desktop 2</name>
</product>
<product type="Tablet">
<name>Ipad 2</name>
</product>
</products>
答案 0 :(得分:1)
正如Scuzzy在评论中提到的那样,使用SimpleXMLElement::xpath
简化了解决方案:
foreach ($XMLproducts->xpath('/products/product[@type="Tablet"]/name') as $name) {
echo $name , "<br>";
}
答案 1 :(得分:0)
试试这个
$XMLproducts = simplexml_load_file("products.xml");
foreach($XMLproducts->products->product as $product) {
foreach ($product->attributes() as $a => $b) {
$i = 0;
if ($b == "Tablet") {
echo $XMLproducts->product[$i]->name;
echo "<br>";
}
}
}