当前位置: 首页 > 知识库问答 >
问题:

添加CDATA到XML元素SimpleXML和WITHOUTdom_import_simplexml()

赫连正初
2023-03-14

我有这个项目的最后期限(星期一)。它在本地主机上运行得非常好,但是当我将它上传到web服务器时,我发现我们没有启用所有DOM包,并且我无法使用函数DOM\u import\u 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个答案

穆博简
2023-03-14

他们不支持这一点令人困惑。你必须破浪前进。

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

这是有问题的,也许这些字符串可能会出现在您的cdata中的某个地方。你必须冒这个险。

很抱歉,我无法帮助您完成最后期限,但至少任何对使用DOM感到烦恼或无法使用DOM的人都会有类似的解决方案。

 类似资料:
  • 主要内容:PCDATA - 被解析的字符数据,CDATA - (未解析)字符数据XML 文档中的所有文本均会被解析器解析。 只有 CDATA 区段中的文本会被解析器忽略。 PCDATA - 被解析的字符数据 XML 解析器通常会解析 XML 文档中所有的文本。 当某个 XML 元素被解析时,其标签之间的文本也会被解析: <message> This text is also parsed</message> 解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个实例中

  • 我正在努力寻找一个很好的例子,说明如何将XML元素添加到XML文档中,并将数据(内部文本)添加到同一元素中,但将数据包装到CDATA标记中? 这是我需要的一个例子。我有以下文件。 然后我想添加一个元素和CDATA作为内部文本。所以它看起来像这样。我需要包装在CDATA标签中的数据可能相当大,需要从文件中读取/引用。 然后我需要写的变化到一个新的文档...(

  • 主要内容:什么是 PHP SimpleXML?,安装,PHP SimpleXML 实例,实例 1,实例 2,实例 3,更多 PHP SimpleXML 的信息PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理。 什么是 PHP SimpleXML? SimpleXML 是 PHP 5 中的新特性。 SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。 与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XM

  • 假设我有一个XML文件,如: 我想读取xslt转换器中的CDATA元素“name”,并将其值放在标记值的某个位置。我该怎么做?抱歉,我们不能对CDATA的内容使用xpath。是否有一些破解/解决方法?我希望在XSLT中严格执行此操作。

  • 问题内容: 如何从此布局xml中获取元素myButton 并将其放在我选择的布局中(通过代码)? 解决方案(thx aromero) 问题答案:

  • 主要内容:添加新的 HTML 内容,jQuery append() 方法,实例,jQuery prepend() 方法,实例,通过 append() 和 prepend() 方法添加若干新元素,实例,jQuery after() 和 before() 方法,实例,通过 after() 和 before() 方法添加若干新元素,实例通过 jQuery,可以很容易地添加新元素/内容。 添加新的 HTML 内容 我们将学习用于添加新内容的四个 jQuery 方法: append() - 在被选元素的结