我有一个购物目录,每行末尾有一个按钮,用于将商品添加到购物车。我需要增加"保留数量(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从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();
答案 0 :(得分:2)
我认为你的代码中有两个小错误。在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;