可能的重复项:
逃<?在 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); ?>