可能重复:
Escaping <? on php shorthand enabled server when using require
我想要的是当我向domain/xml.php
发出Ajax get请求时。它返回一个XML文件,因此我可以使用httpRequest.responseXML来解析XML文件。
我做的是:
<?php
$name = 'Just a tester';
?>
<?xml version='1.0' ?>
<name><?php echo $name ?></name>
但解析器给出了行<?xml version='1.0' ?>
的错误,我认为它可能与php定界符<?php
语法冲突。
如何申请网址并获取php生成的xml?
答案 0 :(得分:3)
您已启用短标签。这是默认设置,从PHP 5.4开始,无论短标签设置如何,都支持所有标签。
问题是<?xml version='1.0' ?>
以<? ?>
开头和结尾,就像带有短标签的PHP一样。
为了解决这个问题:
echo "<?xml version='1.0' ?>";
在那条线上。
答案 1 :(得分:2)
为什么要尝试将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>
*/
?>
答案 2 :(得分:1)
你可以尝试:
<?php
header('Content-type: text/xml; charset=utf-8');
$name = 'Just a tester';
echo "<?xml version='1.0' ?>";
?>
<name><?php echo $name; ?></name>
答案 3 :(得分:1)
更改
echo "<?xml...?>";
到
echo '<'."?...?".'>';
或使用Lawerence解决方案
答案 4 :(得分:0)
您应该将您的网络服务器设置为不仅通过PHP预处理器处理PHP而且还处理XML文件。
答案 5 :(得分:-2)
您已启用短标记。这些应该在你的php.ini中禁用,搜索“short_open_tag”和“asp_tag”。
如果您的版本早于PHP 5.3.0,则可能会有效(如果您只想将其用于当前文档):
<?php ini_set('short_open_tag', 0); ?>