为什么我不能在 xml 文件中嵌入 php


Why can't I embed php in the xml file?

可能的重复项:
逃<?在 PHP 速记启用服务器上,当使用需要时

我想要的是,当我发出Ajax获取请求时domain/xml.php。它返回一个XML文件,所以我可以使用httpRequest.responseXML来解析XML文件。

我所做的是:

<?php
    $name = 'Just a tester';
?>
<?xml version='1.0' ?>
<name><?php echo $name ?></name>

但是解析器给了我行<?xml version='1.0' ?>的错误,我认为可能是语法冲突与php分隔符<?php

如何请求 url 并获取 php 生成的 xml?

您已启用短标签。这是默认设置,从 PHP 5.4 开始,无论短标签设置如何,任何地方都支持标签。

问题是<?xml version='1.0' ?><? ?>开头和结尾,就像带有短标签的PHP一样。

要绕过此用途:

echo "<?xml version='1.0' ?>";

在那条线上。

为什么你试图将PHP变量嵌入到XML中,而不是用PHP生成XML?

示例 (xml.php):

<?php 
header('Content-type: text/xml; charset=utf-8');
//Your Data
$persons = array(array('name'=>'bob','age'=>20,'sex'=>'M'),
                 array('name'=>'steve','age'=>26,'sex'=>'M'),
                 array('name'=>'jen','age'=>33,'sex'=>'F'),
                 );

$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><persons/>');
foreach ($persons as $person) {
    $node = $xml->addChild('person');
    foreach($person as $key=>$value){
        $node->addChild($key, $value);
    }
}
//DOMDocument to format code output
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
echo $dom->saveXML();
/* OUTPUT
<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person>
    <name>bob</name>
    <age>20</age>
    <sex>M</sex>
  </person>
  <person>
    <name>steve</name>
    <age>26</age>
    <sex>M</sex>
  </person>
  <person>
    <name>jen</name>
    <age>33</age>
    <sex>F</sex>
  </person>
</persons>
*/
?>

你可以试试:

<?php
header('Content-type: text/xml; charset=utf-8');
$name = 'Just a tester';
echo "<?xml version='1.0' ?>";
?>
<name><?php echo $name; ?></name>

更改

echo "<?xml...?>";

echo '<'."?...?".'>';

或使用劳伦斯解决方案

您应该将Web服务器设置为不仅处理PHP,还通过PHP预处理器处理XML文件。

您已启用短标签。这些应该在你的php.ini中被禁用,搜索"short_open_tag"和"asp_tag"。

如果你有一个比 PHP 5.3.0 更早的版本,这可能会起作用(如果你只希望当前文档这样做):

<?php ini_set('short_open_tag', 0); ?>