从xml文件中提取一个节点值,并用php更新该值
我有一个购物目录,每行末尾都有一个按钮,用于将商品添加到购物车中。我需要在用户每次按下“添加”按钮时将“保留数量(IqtyOH)”增加一个。我需要根据该按钮修改xml文档 这是我的xml文件,只是为了了解我的想法从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>
<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;