0

重複の可能性:
エスケープ <? require を使用する場合の php 短縮形対応サーバー

私が欲しいのは、Ajax get リクエストを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 の時点では、ショートタグの設定に関係なく、どこでもタグがサポートされています。

問題は、ショートタグを使用した PHP のように、で<?xml version='1.0' ?>始まり で終わることです。<? ?>

これを回避するには、次のように使用します。

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 ファイルも処理するように、Web サーバーをセットアップする必要があります。

于 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 に答える