weixin_33721427 2016-05-02 09:06 采纳率: 0%
浏览 11

AJAX和simpleXML

I have the following code in my 'update_xml.php' file:

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

I'm using AJAX to post data to this file:

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

All this works fine, but I also need to be able to post the specific tag to be updated too. Eg:

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;

This clearly doesn't work ($tag is now a string). I've tried using eval(), to no avail, and not the best way of going about this. Any ideas?

  • 写回答

1条回答 默认 最新

  • weixin_33724570 2016-05-03 10:28
    关注

    You could use XPath, which is a language for addressing nodes in an XML document. SimpleXML has an xpath() method.

    In your example, the XPath would be simple:

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

    And you'd apply it like this:

    $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];
    
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持