Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/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_Jquery_Xml_Ajax - Fatal编程技术网

使用php替换部分xml

使用php替换部分xml,php,jquery,xml,ajax,Php,Jquery,Xml,Ajax,我试图通过ajax将一些数据发布到一个php文件中,该文件编写了一些xml。我基本上想发布一些数据,并替换xml的某些部分 js: $(".aSave").click(function(){ var name = $(this).attr("data-name"); var value = $(this).attr("data-value"); var dataObj = {}; dataObj[name]=value; $.ajax({

我试图通过ajax将一些数据发布到一个php文件中,该文件编写了一些xml。我基本上想发布一些数据,并替换xml的某些部分

js:

$(".aSave").click(function(){
    var name = $(this).attr("data-name");
    var value = $(this).attr("data-value");
    var dataObj = {};
    dataObj[name]=value;

    $.ajax({
        url: 'view/template/common/panel.php',
        type: 'post',
        data: dataObj,
    }).done(function(){
        alert("saved!");
    });
});
php:

<?php
    $fruits [] = array(
        $orangesValue = $_POST['oranges'],
        $applesValue = $_POST['apples'], 
    ); 

    $doc = new DOMDocument(); 
    $doc->formatOutput = true; 

    $mainTag = $doc->createElement( "fruits" ); 
    $doc->appendChild( $mainTag ); 

    $oranges = $doc->createElement("oranges"); 
    $oranges->appendChild($doc->createTextNode($orangesValue)); 
    $mainTag->appendChild($oranges);

    $apples = $doc->createElement("apples"); 
    $apples->appendChild($doc->createTextNode($applesValue)); 
    $mainTag->appendChild($apples);

    echo $doc->saveXML(); 
    $doc->save("fruits.xml")
?>
save(“fruits.xml”)
?>
现在,当我发送oranges值时,它会编写一个新的xml文件,其中只包含oranges值。是否可以只替换我发布的值


干杯

如果我理解正确,您想阅读一个现有的XML文档,替换
oranges
元素的文本内容,然后再次保存文档吗

那么试试这个:

$fileName = '/my/absolute/path/to/my/file.xml';
$doc = new DOMDocument();
$doc->load($fileName);
$nodes = $doc->getElementsByTagName('oranges');

if (NULL != $nodes) {
  $nodes->item(0)->nodeValue = $_POST['oranges'];
}

$doc->save($fileName);
但这太复杂了(或者我讨厌DOM扩展)。如果您有可用的扩展,请尝试以下操作:

$fileName = 'blabla.xml';
$xml = simplexml_load_file($fileName);
$xml->oranges = $_POST['oranges'];
$xml->asXML($fileName);
当然,在将数据写入XML文件之前,需要检查
$\u POST
数据的正确性。如果要根据您发布的是苹果还是橙子采取行动,请将
oranges
替换为变量:

foreach ($_POST as $fruit => $val) {
  $xml->{$fruit} = $val;
}