0

可能重复:
转义 <? 使用 require 时在启用 php 速记的服务器上

我想要的是,当我向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?

4

6 回答 6

3

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

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

为了解决这个问题:

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

在那条线上。

于 2012-08-19T12:38:49.453 回答
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>
*/
?>
于 2012-08-19T13:10:01.773 回答
1

你可以试试:

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

<name><?php echo $name; ?></name>
于 2012-08-19T12:41:35.050 回答
1

改变

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

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

或使用劳伦斯解决方案

于 2012-08-19T13:33:33.470 回答
0

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

于 2012-08-19T12:35:03.153 回答
-2

您启用了短标签。这些应该在您的 php.ini 中禁用,搜索“short_open_tag”和“asp_tag”。

如果您的版本早于 PHP 5.3.0,这可能会起作用(如果您只希望当前文档使用此版本):

<?php ini_set('short_open_tag', 0); ?>
于 2012-08-19T12:34:18.703 回答