Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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/9/ios/114.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_Ios_Xml_Post_Http Post - Fatal编程技术网

PHP来编辑现有的XML条目

PHP来编辑现有的XML条目,php,ios,xml,post,http-post,Php,Ios,Xml,Post,Http Post,好的,请耐心听我解释这个应用程序。第一个视图显示一个tableview,其中每一行都是有人使用应用程序发出的“请求”。请求实际上是一个经过解析的xml文件,其外观如下: <item> <title>Request</title> <name>Name</name> <Responses>0</Responses> </item> 要求 名称 0 使用本段下面列出的脚本,我能够在iOS中运行一些代

好的,请耐心听我解释这个应用程序。第一个视图显示一个tableview,其中每一行都是有人使用应用程序发出的“请求”。请求实际上是一个经过解析的xml文件,其外观如下:

<item>
<title>Request</title>
<name>Name</name>
<Responses>0</Responses>
</item>

要求
名称
0
使用本段下面列出的脚本,我能够在iOS中运行一些代码,这些代码将从应用程序中的文本框中提取文本,并用新的项目集附加XML

<?php
$firstName = $_POST['firstName'];
 $lastName = $_POST['lastName'];
 $request = $_POST['request'];
 $anon = $_POST['anon'];
 $pubDate = $_POST['pubDate'];
 $loc = $_POST['loc'];
//This line will load the XML file
$xml = simplexml_load_file("URL.xml") or die("Not loaded!\n");
//print_r($xml);
//This line gets the channel element (from an array returned by the xpath method) 
$channel = $xml->xpath('//channel'); 
$channel = $channel[0];
//print_r($channel);
$person = $channel->addChild("item");
$person->addChild("first_name", $firstName);
$person->addChild("last_name", $lastName);
$person->addChild("title", $request);
$person->addChild("date", $pubDate);
$person->addChild("anonymous", $anon);
$person->addChild("responses", "0");
$person->addChild("location", $loc);

//This next line will overwrite the original XML file with new data added
$xml->asXML("Test.xml");
?>

实际的XML比我在开始时列出的要多得多,我只是将其向下编辑以节省空间,所以这就是它和PHP不完全匹配的原因

所有这些都非常有效,应用程序解析XML以显示所请求的内容,用户可以发出新请求,然后在应用程序中显示

我的问题是,当有人响应现有请求时,我希望
增加1。我是否可以使用另一个脚本来查找该条目,并将+1添加到该条目响应标记中当前存在的任何数字

我已经看过这个脚本,但它似乎遍历并搜索了某个标记的所有内容,并在XML中更改了该名称的所有标记。我只是想找到一个具体的,并改变它。建议

$str = <<<XML
<ScrapBook>
  <Event>
   <Name> Name of Event </Name>
   <Blah>glop glop</Blah>
  </Event>
</ScrapBook>
XML;

$xmlDoc = new DOMDocument();
$xmlDoc->loadXml($str);
$events = $xmlDoc->getElementsByTagName("Event");
foreach($events as $event){
    $eventNames = $event->getElementsByTagName("Name");
    $eventN = $eventNames->item(0)->nodeValue;
    if(' Name of Event ' == $eventN){
        $eventNames->item(0)->nodeValue = 'New name';
    }
}
var_dump($xmlDoc->saveXML());
$str=getElementsByTagName(“名称”);
$eventN=$eventNames->item(0)->nodeValue;
if('Name of Event'=$eventN){
$eventNames->item(0)->nodeValue='newname';
}
}
var_dump($xmlDoc->saveXML());

您可以使用
simplexml
来实现这一点;首先,选择要更改的
,然后存储新的

$xml=simplexml\u load\u string($x);//假设XML为$x
//使用xpath按标题和名称进行选择
$responses=$xml->xpath(“/items/item[title='Foo'和name='Bar']/responses”);
//门店号+1
$responses[0][0]=$responses[0]+1;

查看它的工作情况:

我遵循您在这里所做的操作,但我如何编写此脚本,因为它编辑的条目对每个人都不同?基本上,因为其想法是用户选择条目,做出承诺,并让该条目的响应上升1,我希望该应用程序更改该名称和特定请求的应用程序。在PHP中,如何为它添加占位符?我尝试了这个
,但没有任何效果
$xml = simplexml_load_string($x); // assume XML in $x

// select <Responses> with xpath by title and name
$responses = $xml->xpath("/items/item[title = 'Foo' and name = 'Bar']/Responses");

// store number + 1
$responses[0][0] = $responses[0] + 1;