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


Extract a node value from a xml file and update that value with php

我有一个购物目录,每行末尾都有一个按钮,用于将商品添加到购物车。每次用户按下添加按钮时,我需要将"保留数量(IqtyOH)"递增 1。我需要根据这一点修改 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 从 xml 文件中检索信息,但没有用。有些不对劲。这是我正在处理的代码。

$dom = new DOMDocument;
$dom->loadXML(file_get_contents($xmlFile));
$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//item[IID='$IId']/IqtyOH");
$node  = $nodes->item(0)->nodeValue;
$node++;
$node->nodeValue = $node;
$dom->saveXML();

我认为你的代码中有两个小错误。在 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;