XML中的PHP代码?

时间:2011-04-05 09:13:55

标签: php xml

是否可以将PHP代码放在XML文档中以便稍后执行?例如,我可以说<element value="<?php echo date('Y'); ?>" />吗?

谢谢!

7 个答案:

答案 0 :(得分:5)

这是可能的,但我建议将其放在 CDATA 块中,这样您就不必转义<和类似字符:

<element> 
   <![CDATA[ 
      <?php echo date('Y'); ?>
   ]]>
</element>

答案 1 :(得分:3)

如果您将XML文件作为PHP脚本运行,那么是。脚本的输出将是有效的XML,但包含内联PHP的文件很可能是有效的XML。

答案 2 :(得分:2)

要强制您的网络服务器在XML文件中执行PHP,请将.xml - 文件的MIME类型更改为application/x-httpd-php,方法是将此行添加到.htaccess

AddType application/x-httpd-php .xml

现在,Web服务器处理所有XML文件的方式与PHP文件相同:

<?xml version="1.0" encoding="UTF-8"?>
<servertime> 
  <?php
    echo date('c');
    header('Content-Type: application/xml; charset=utf-8');
  ?>
</servertime>

请注意,header - 定义用于将文件的MIME类型更正回application/xml。否则它将被浏览器视为HTML,从而阻止它显示一个漂亮的DOM树(或者默认的XML处理可能是......)。即使文件不是打算在浏览器中打开,也不是很好来伪造文件的MIME类型,所以请不要忘记这一行;)

此解决方案的缺点:现在所有.htaccess的访问范围内的XML文件将被视为php,因此您必须更改任何类型的MIME类型通过PHP在同一文件夹中的XML文件。解决方法:将php-hacked XML和.htaccess移动到单独的文件夹中。

答案 3 :(得分:0)

当然可以。你可能会有:php -f yourfile.xml

答案 4 :(得分:0)

使用此示例代码,filenamed'example.php':

<?php
ob_start();
require_once "relative/path/to/file.xml";
$xml_with_php_values = ob_get_clean();
?>

将php放入xml文件中,就像放入html一样。

答案 5 :(得分:0)

PHP程序可以输出您喜欢的任何类型的内容,但是默认情况下它会(如果与mod_php这样的Web模块一起使用)输出文本/ html内容类型,所以您需要这样做:

<?php
    header('Content-Type: application/xml; charset=utf-8');
?>

(如果适用,则替换更合适的内容类型。)

您还需要配置您的网络服务器,以识别该文件应被视为PHP,而不是作为静态数据提供。这通常通过为文件提供 .php 扩展名来实现。如果要使用不同的文件命名约定,请参阅Web服务器手册和PHP模块。

答案 6 :(得分:-1)

<element value="&lt;?php echo date('Y'); ?&gt; />