使用SimpleXML和WITHOUT dom_import_simplexml()将CDATA添加到XML元素

时间:2012-07-06 16:36:32

标签: php dom simplexml

我有这个项目的截止日期(星期一)。它在localhost上工作得很好,但是当我将它上传到我们的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']));
  }

最后三行显然不起作用,我不知道我还能用它做什么!

非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

他们不支持这个令人困惑。你必须破解流。

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

这是有问题的,也许这些字符串可能会出现在你的cdata中。你必须承担的风险。

很抱歉,我无法帮助您完成截止日期,但至少有人因使用DOM或无法使用它而烦恼,会有各种解决方案。