Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
PHP-编辑包含字符串的XML文件_Php_Xpath_Simplexml - Fatal编程技术网

PHP-编辑包含字符串的XML文件

PHP-编辑包含字符串的XML文件,php,xpath,simplexml,Php,Xpath,Simplexml,我想更改XML文件中的一行,该行包含通过POST获得的代码 我正在寻找一种方法来查找XML文件目录中包含代码的文件,然后更改行 有人能帮我吗 我的PHP代码: $files = scandir('xml/.'); // List files foreach($files as $file) { if($file == '.' || $file == '..') continue; $xml = simplexml_load_file("xml/".$file); $result

我想更改XML文件中的一行,该行包含通过POST获得的代码

我正在寻找一种方法来查找XML文件目录中包含代码的文件,然后更改行

有人能帮我吗

我的PHP代码:

$files = scandir('xml/.'); // List files
foreach($files as $file) { 
  if($file == '.' || $file == '..') continue; 
  $xml = simplexml_load_file("xml/".$file);
  $result = $xml->xpath("pedido"); 
  if($result[3]->numpedido == $dilma) {
   echo "It exists!";
  }
}

/* My XML Looks like this
<pedido>
  <cliente>João</cliente>
  <mesa>34</mesa>
  <hora>13:01:10</hora>
  <numpedido>6780110</numpedido>
  <lista>Baiao, Frango, Porco, e Macaxeira</lista>
  <status>Aberto</status>
</pedido>
*/
$files=scandir('xml/);//列出文件
foreach($files作为$file){
如果($file=='。| |$file=='..)继续;
$xml=simplexml\u load\u文件(“xml/”$file);
$result=$xml->xpath(“pedido”);
如果($result[3]->numpedido==$dilma){
回声“它存在!”;
}
}
/*我的XML看起来像这样
若昂
34
13:01:10
6780110
拜奥,弗兰戈,波尔科,马卡西拉
阿伯托
*/
编辑:我得到的错误是:

注意:第43行的/var/www/html/restaurant/cmae/rita.php中未定义的偏移量:3


注意:试图在第43行的/var/www/html/restaurant/cmae/rita.php中获取非对象的属性不会返回任何结果。你需要 将xpath更改为
$result=$xml->xpath(“/pedido”)。这样,您将拥有一个包含简单XML元素的数组(结果的处理需要不同)


你能帮我处理结果吗?我试图使用一个
foreach($xml->children()as$child){…}
但它不起作用,然后我尝试使用
$result[5]->status=$temer($temer也从POST收到),但它也不起作用。:/[编辑:我需要更改XML上的行]如果您将使用我提供的示例并稍微更改
echo'exists';至$result[0]->status='statusToChange'
然后您已经更改了对象$xml中的xml(因为引用)。接下来的步骤是保存文件内容(“xml/”$file,$xml->asXML())<代码>$result=$xml->xpath(“/pedido”)
将分配一个数组,该数组包含与
$xml
变量相同的节点(或不包含任何内容)。基本上,
$result[0]->numpedido
$xml->numpedido
是相同的。不需要Xpath。如果
pedido
不是根节点,则情况会有所不同。您认为
$result[3]
是什么?我想
$result[3]
可能是数组
$result[]
的第四行,其中包含
的子节点
if (isset($result[0]) && isset($result[0]->numpedido) && $result[0]->numpedido == $dilma) {
    echo 'exists';
}