Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-使用simpleXML引用XML属性_Php_Xml_Simplexml - Fatal编程技术网

PHP-使用simpleXML引用XML属性

PHP-使用simpleXML引用XML属性,php,xml,simplexml,Php,Xml,Simplexml,使用simplexml_load_file方法,我试图检索并显示所有名为“type”的属性值为“table”的name元素(来自下面的XML文件)的文本。此foreach循环仅显示第一个元素的值。有任何建议吗?谢谢 $XMLproducts = simplexml_load_file("products.xml"); foreach($XMLproducts->product->attributes() as $a => $b) { $i = 0; if ($b ==

使用simplexml_load_file方法,我试图检索并显示所有名为“type”的属性值为“table”的name元素(来自下面的XML文件)的文本。此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>";
  }
}
$XMLproducts=simplexml_load_文件(“products.xml”);
foreach($XMLproducts->product->attributes()作为$a=>b){
$i=0;
如果($b==“平板电脑”){
echo$XMLproducts->product[$i]->name;
回声“
”; } }
以下是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>

桌面1
iPad1
桌面2
iPad2

如SCUZY在评论中所述,使用简化了解决方案:

foreach ($XMLproducts->xpath('/products/product[@type="Tablet"]/name') as $name) {
    echo $name , "<br>";
}
foreach($XMLproducts->xpath('/products/product[@type=“Tablet”]/name')作为$name){
echo$name,“
”; }
试试这个

 $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>";
      }
   }
 }
$XMLproducts=simplexml_load_文件(“products.xml”);
foreach($XMLproducts->products->products as$product){
foreach($product->attributes()作为$a=>$b){
$i=0;
如果($b==“平板电脑”){
echo$XMLproducts->product[$i]->name;
回声“
”; } } }
您需要执行两个循环:
foreach($XMLproducts->product as$product){foreach($product->attributes()as$a=>$b){if($b='Tablet')echo$product->name;}。
(或者使用1个Xpath:
/product[@type=“Tablet”]/name
)。看看使用,这是天赐之物