Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 如何从XML中读取所有产品_Php_Mysql_Xml - Fatal编程技术网

Php 如何从XML中读取所有产品

Php 如何从XML中读取所有产品,php,mysql,xml,Php,Mysql,Xml,我的XML文件中有许多类别。我如何阅读其中的所有产品 它只读第一类。 我将包含xml文件供您查看。下面是我正在使用的PHP代码: //get products from xml file foreach($xml->CREATED->CATEGORY as $product){ $atts = $product->PRODUCT->attributes(); $productitemid = $atts['ITEM']; $title = $pr

我的XML文件中有许多类别。我如何阅读其中的所有产品

它只读第一类。 我将包含xml文件供您查看。下面是我正在使用的PHP代码:

 //get products from xml file
  foreach($xml->CREATED->CATEGORY as $product){

  $atts = $product->PRODUCT->attributes();
  $productitemid = $atts['ITEM'];

  $title   = $product->MODEL;
  $rrp   = $product->RRP;
  $productsdescription   = $product->DESCRIPTION;
  $prodname   = $product->NAME;
   echo  $productitemid.' - ' ;
  // echo $product->id.' - ';
  mysql_query("INSERT INTO products (products_id,products_model,products_price,products_status) VALUES ('$productitemid','$title','$rrp','1')");
  mysql_query("INSERT INTO products_description (products_id,products_name,products_description) VALUES ('$productitemid','$prodname','$productsdescription')");
}
下面是XML结构:

 <?xml version="1.0" encoding="iso-8859-1"?>
 <STOREITEMS>
 <CREATED value="Fri Feb 22 1:01:02 GMT 2013">
  <CATEGORY id="441" name=" > test1">
  <PRODUCT ITEM="12796">
   <NAME>test1</NAME>
   <MODEL>bb2018</MODEL>
  <PRICE>2.28</PRICE>
   <RRP>3.99</RRP>
   <THUMB>bb2018s.jpg</THUMB>
    <IMAGE>bb2018.jpg</IMAGE>
     <DESCRIPTION>
       test1
      </DESCRIPTION>
      <POWER/>
      <SIZE/>
      <ATTRIBUTES NAME="Size" ATTRIBUTEID="2">
        <ATTRIBUTEVALUES VALUE="16" TITLE="Small" PRICEADJUST="0.00"/>
         <ATTRIBUTEVALUES VALUE="17" TITLE="Medium" PRICEADJUST="0.00"/>
          <ATTRIBUTEVALUES VALUE="18" TITLE="Large" PRICEADJUST="0.00"/>
          </ATTRIBUTES>
         </PRODUCT>
    <CATEGORY id="442" name=" > test2">
     <PRODUCT ITEM="12805">
    <NAME>test2</NAME>
     <MODEL>bb2034</MODEL>
     <PRICE>0.58</PRICE>
     <RRP>1.50</RRP>
      <THUMB>bb2034s.jpg</THUMB>
      <IMAGE>bb2034.jpg</IMAGE>
      <DESCRIPTION>
        test2
       </DESCRIPTION>
       <POWER/>
      <SIZE/>
        </PRODUCT>
        <CATEGORY id="4423" name=" > test3">
        <PRODUCT ITEM="13719">
         <NAME>test3?</NAME>
         <MODEL>BCPG02</MODEL>
         <PRICE>2.83</PRICE>
         <RRP>4.95</RRP>
       <THUMB>bcg02s.jpg</THUMB>
   <IMAGE>bcpg02.jpg</IMAGE>
     <DESCRIPTION>
     test3
    </DESCRIPTION>
    </PRODUCT>
     </CATEGORY>
     </CREATED>
     </STOREITEMS>

请看下面的代码示例 希望这对你有帮助

<?php
  $xmlString= '<xml Version="1.0">
  <created>
 <category>
   <product id="a"/>
 </category>
 <category>
   <product id="b"/>
 </category>
 <category>
   <product id="c"/>
 </category>
 <category>
   <product id="d"/>
 </category>
 </created>
 </xml>';


$xml = new SimpleXMLElement($xmlString);

foreach ($xml->created->category as $element)
{
  foreach($element as $val)
  {
        echo " product : ".$val->attributes();
  }
}

?>

您可以尝试像这样使用DOMDocument:

$doc = new DOMDocument();
$var = $doc->load('yourxml.xml');

$root = $doc->documentElement;   //root node
$items = $doc->getElementsByTagName('product');

foreach ($items as $bar)
{
    $name = $bar->getElementsByTagName('name')->item(0)->nodeValue;
    $model = $bar->getElementsByTagName('model')->item(0)->nodeValue;
    $price = ....
    //do something with the values
}

请添加xml的结构好吗?学习隔离问题。如果问题是您没有从XML中读取所有项目,那么对MySQL的所有引用都是无关的。
product : a product : b product : c product : d
$doc = new DOMDocument();
$var = $doc->load('yourxml.xml');

$root = $doc->documentElement;   //root node
$items = $doc->getElementsByTagName('product');

foreach ($items as $bar)
{
    $name = $bar->getElementsByTagName('name')->item(0)->nodeValue;
    $model = $bar->getElementsByTagName('model')->item(0)->nodeValue;
    $price = ....
    //do something with the values
}