Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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
从xml文件中提取一个节点值,并用php更新该值_Php_Xml_Xpath_Shopping Cart - Fatal编程技术网

从xml文件中提取一个节点值,并用php更新该值

从xml文件中提取一个节点值,并用php更新该值,php,xml,xpath,shopping-cart,Php,Xml,Xpath,Shopping Cart,我有一个购物目录,每行末尾都有一个按钮,用于将商品添加到购物车中。我需要在用户每次按下“添加”按钮时将“保留数量(IqtyOH)”增加一个。我需要根据该按钮修改xml文档 这是我的xml文件,只是为了了解我的想法 <items> <item> <IId>1</IId> <Iname>samsung</Iname> <Iprice>360</Iprice> <IqtyAv>

我有一个购物目录,每行末尾都有一个按钮,用于将商品添加到购物车中。我需要在用户每次按下“添加”按钮时将“保留数量(IqtyOH)”增加一个。我需要根据该按钮修改xml文档

这是我的xml文件,只是为了了解我的想法

<items>
 <item>
  <IId>1</IId>
  <Iname>samsung</Iname>
  <Iprice>360</Iprice>
  <IqtyAv>9</IqtyAv>
  <IqtyOH>0</IqtyOH>
  <IqtySold>0</IqtySold>
  <ItemDesc>Galaxy</ItemDesc>
 </item>
 <item>
  <IId>2</IId>
  <Iname>sony</Iname>
  <Iprice>1200</Iprice>
  <IqtyAv>12</IqtyAv>    
  <IqtyOH>0</IqtyOH>
  <IqtySold>0</IqtySold>
  <ItemDesc>vaio</ItemDesc>
 </item>
</items>

我认为您的代码中有两个小错误。在XPATH中

$nodes = $xpath->query("//item[IID='$IId']/IqtyOH");
IID
元素应该是
IID
。所以你得到:

$nodes = $xpath->query("//item[IId='$IId']/IqtyOH");
其次,
$node
是您找到的节点的值,而不是对它的引用,因此您不能对其调用
nodeValue
。相反,您可以这样做:

$node = $nodes->item(0)->nodeValue;
$node++;
$nodes->item(0)->nodeValue =$node;

我做了更改,但它仍然没有修改xml。也不要得到任何错误。您是否正在尝试更改$xmlFile的内容(即,将结果保存回该文件)?如果是这样,您可能希望使用
$dom->save($xmlFile)<代码>$dom->saveXML()只返回生成的xml。(因此,如果您执行
echo$dom->saveXML();
您将看到更新版本。)非常感谢。将代码更改为$dom->save($xmlFile)。现在它可以工作了。非常感谢。您需要启用错误报告-这只是一个小错误-请参阅此处:有关错误参考,请参阅此处:
$node = $nodes->item(0)->nodeValue;
$node++;
$nodes->item(0)->nodeValue =$node;