0

このプロジェクトには締め切りがあります (月曜日)。ローカルホストでは問題なく動作しましたが、Web サーバーにアップロードしたところ、すべての DOM パッケージが有効になっておらず、関数 dom_import_simplexml() を使用できないことがわかりました。私のサーバー管理者は私の要求を無視しています。これはおそらく短い通知のためであり、XML システムをデータベース システムにすぐに書き直すことはできません。

これは、私が遭遇した唯一のエラーのようです。代替案がありましたら、ぜひお聞かせください。他の解決策が見つからないため、途方に暮れています。私がしなければならないことは、いくつかの XML 要素を作成し、それらに CDATA 値を入力することだけです。これが SimpleXML でサポートされていないなんて信じられません!

考えられる代替案はありますか?何ができるかわからないので、私はオープンです。

  // Add a <pages /> element
  $xml->addChild('pages');
  // Populate it with data 
  foreach($pages as $page){
   $new = $xml->pages->addChild('page');
   $new->addAttribute('pid', $page['pid']);
   $new->addAttribute('title', $page['title']);
   if(isset($page['ancestor']))
    $new->addAttribute('ancestor', $page['ancestor']);
   $node = dom_import_simplexml($new);
   $no = $node->ownerDocument;
   $node->appendChild($no->createCDATASection($page['content']));
  }

最後の 3 行は明らかに機能しません。他に何ができるかわかりません。

ご協力いただきありがとうございます。

4

1 に答える 1

0

彼らがこれをサポートしていないのは不可解です。ストリームをハックする必要があります。

$xml->node = '<![CDATA[character data]]>'; 
echo preg_replace('/\]\]&gt;</', ']]><', preg_replace('/&lt;!\[CDATA/','<![CDATA',  $xml->asXML()));

これは問題です。おそらく、これらの文字列が cdata のどこかに表示される可能性があります。あなたが取らなければならないリスク。

申し訳ありませんが、締め切りに間に合わせることができませんでしたが、少なくとも DOM の使用に悩まされている人や、それを使用できない人には、何らかの解決策があります。

于 2014-07-17T19:39:52.093 に答える