1

私は DOMDocument を使用して XML を生成していますが、この XML にはイメージ タグが必要です。

どういうわけか、私がするとき(簡略化)

$response = new DOMDocument();
$actions = $response->createElement('actions');
$response->appendChild($actions);

$imageElement = $response->createElement('image'); 
$actions->appendChild($imageElement);

$anotherNode = $response->createElement('nodexy');
$imageElement->appendChild($anotherNode);

その結果、

 <actions>
    <img>
    <node></node>
 </actions>

「image」を「images」または「img」に変更すると機能します。PHP 5.3.10 から 5.3.8 に切り替えた場合も同様に機能します。

これはバグですか、それとも機能ですか? 私の推測では、DOMDocuments は、私が HTML img 要素を作成したいと想定していると思います...どうにかしてこれを防ぐことはできますか?

さらに奇妙なことに、同じサーバー上の別のスクリプトでエラーを再現できません。でもパターンがつかめない…

これは、エラーの原因となっているクラスの完全なペーストビンです: http://pastebin.com/KqidsssM

4

3 に答える 3

2

それには2時間かかりました。

DOMDocument は XML を正しくレンダリングします。XML は ajax 呼び出しによって返され、何らかの形でブラウザ/javascript がそれを表示する前に img に変更します ...

于 2012-06-29T11:11:16.037 に答える
0

「htmlドキュメント」がバージョン番号「1.0」を追加しようとしているように動作していると思います

コード

<?php

    $response = new  DOMDocument('1.0','UTF-8');
    $actions = $response->createElement('actions');
    $response->appendChild($actions);

    $imageElement = $response->createElement('image'); 
    $actions->appendChild($imageElement);

    $anotherNode = $response->createElement('nodexy');
    $imageElement->appendChild($anotherNode);

    echo $response->saveXML();

出力:

  <?xml version="1.0" encoding="UTF-8" ?> 
     <actions>
       <image>
         <nodexy /> 
       </image>
     </actions>

また、 SimpleXMLクラスを使用できます

例 :

<?php
    $response = new SimpleXMLElement("<actions></actions>");
    $imageElement = $response->addChild('image');
    $imageElement->addChild("nodexy");

    echo $response->asXML();

出力:

 <?xml version="1.0" ?> 
    <actions>
      <image>
        <nodexy /> 
      </image>
   </actions>
于 2012-06-29T11:22:49.617 に答える
0

$imageAction->getAction()44行目で「img」が返される可能性はありますか? あなたはそれをvar_dump()編集しましたか?どのような状況でも、DOM が "image" を "img" に変換する方法がわかりません。

于 2012-06-29T11:05:14.130 に答える