在PHP中读取节点值并将其加1后,将节点值写回xml文件


Write node value back into the xml file after reading it and incrementing it by one in PHP

感谢您的宝贵时间。我是php的新手,像个婴儿。

我有一个Xml文件counter.xml,像。

<?xml version="1.0"?>
<countIt>
<number>50</number></countIt>

我可以通过SimpleXML读取这个文件,如下所示:

$content=simplexml_load_file("counter.xml");
$addid=$content->countIt->number;

现在我想读取这个值(number-> id即55)在一些操作后,如增量1,我想保存这个节点的新值在文件中。这意味着新值必须反映到XML文件中。

我被这个问题难住了。我尝试了DOM,但我只得到帮助来创建一个新的Xml文件。

请帮

解决方案:

<?php
$domObj= new DOMDocument(); 
$domObj->load("counter.xml");
$value= $domObj->getElementsByTagName("countIt");
$newVal = 0 ;
foreach( $value as $val) 
{ 
 $ints = $val->getElementsByTagName("number"); 
 $intVal  = $ints->item(0)->nodeValue; 
 $newVal = $intVal+1;
 $domObj->getElementsByTagName("number")->item(0)->nodeValue = $newVal; 
 $domObj->save('counter.xml');
}  
?>

本例使用xpath()函数选择要更改的节点:

$xml = simplexml_load_string($x); // assume XML in $x
// get the node
$target = $xml->xpath("/countIt/number");
// change it
$target[0][0] = (int)$target[0] + 1;

看到它工作:https://eval.in/153679

的评论:

  • xpath将返回一个数组给$target,在这个例子中它有一个元素。
  • $target[0] = 50,为了安全起见,在添加
  • 之前,我将其与(int)转换为整数
  • 保存新的XML,查看PHP.net上的asXML()simplexml