AJAX and simpleXML


AJAX and simpleXML

我的"update_xml.php"文件中有以下代码:

$xml = simplexml_load_file('content.xml');
$name = $_POST['name'];
$xml->home->main->title = $name;
$output = $xml->asXML();
...

我正在使用AJAX将数据发布到这个文件:

var name = $(this).val();
$.post("update_xml.php", {name: name}, ...

所有这些都很好,但我也需要能够发布要更新的特定标签。例如:

var name = $(this).val();
$.post("update_xml.php", {name: name, tag: '$xml->home->main->title'}, ...

$xml = simplexml_load_file('content.xml');
$name = $_POST['name'];
$tag = $_POST['tag'];
$tag = $name;

这显然不起作用($tag现在是一个字符串)。我尝试过使用eval(),但没有成功,这不是最好的方法。有什么想法吗?

您可以使用XPath,这是一种在XML文档中寻址节点的语言。SimpleXML有一个xpath()方法。

在您的示例中,XPath很简单:

$.post("update_xml.php", {name: name, path: '/home/main/title}, ...

你可以这样应用它:

$xml = simplexml_load_file('content.xml');
$xpath_results = $xml->xpath($_POST['path']);
// $xpath_results is always an array of 0 or more objects
if ( ! $xpath_results ) ... #HANDLE ERROR
$tag = $xpath_results[0];