当前位置: 首页 > 面试题库 >

如何使用SimpleXmlElement编写CDATA?

相弘方
2023-03-14
问题内容

我有以下代码来创建和更新xml文件:

<?php
$xmlFile    = 'config.xml';
$xml        = new SimpleXmlElement('<site/>');
$xml->title = "Site Title";
$xml->title->addAttribute('lang', 'en');
$xml->saveXML($xmlFile);
?>

这将生成以下xml文件:

<?xml version="1.0"?>
<site>
  <title lang="en">Site Title</title>
</site>

问题是:是否可以使用此方法/技术添加CDATA以在下面创建xml代码?

<?xml version="1.0"?>
<site>
  <title lang="en"><![CDATA[Site Title]]></title>
</site>

问题答案:

得到它了!我从这个很棒的解决方案改编了代码:

<?php
// http://coffeerings.posterous.com/php-simplexml-and-cdata
class SimpleXMLExtended extends SimpleXMLElement {
  public function addCData($cdata_text) {
    $node = dom_import_simplexml($this); 
    $no   = $node->ownerDocument; 
    $node->appendChild($no->createCDATASection($cdata_text)); 
  } 
}

$xmlFile    = 'config.xml';
// instead of $xml = new SimpleXMLElement('<site/>');
$xml        = new SimpleXMLExtended('<site/>');
$xml->title = NULL; // VERY IMPORTANT! We need a node where to append
$xml->title->addCData('Site Title');
$xml->title->addAttribute('lang', 'en');
$xml->saveXML($xmlFile);
?>

生成的XML文件:

<?xml version="1.0"?>
<site>
  <title lang="en"><![CDATA[Site Title]]></title>
</site>


 类似资料:
  • 问题内容: 我正在GoLang中为一个简单的REST服务编写测试。但是,因为我使用julienschmidt / httprouter 作为路由库。我正在努力编写测试。 main.go 控制器 我的问题是:当GetBook既不是HttpHandler也不是HttpHandle时如何测试呢? 如果我使用传统的处理程序,这样的测试将很容易 问题是,httprouter不是处理程序,也不是handlef

  • 问题内容: 我正在使用Python在Python中生成XML文档,但是在转换为纯文本时,该函数不包含XML声明。 我需要我的字符串包含以下XML声明: 但是,似乎没有任何记录的方式来执行此操作。 有没有合适的方法来呈现XML声明? 问题答案: 我很惊讶地发现似乎没有办法。但是,您可以用来将XML文档写入伪文件: 看到这个问题。即使那样,我认为如果不自己编写,就无法获得“独立”属性。

  • 问题内容: 我想设置xpath()找到的某个节点的文本 问题答案: 您可以使用 SimpleXMLElement自引用 : 看完后发现

  • 问题内容: 我简要阅读了有关Maxine的信息,这是一个用Java编写的开源JVM实现。这对我来说听起来很圆。如果java要求运行虚拟机,那么如何用Java编写虚拟机本身(VM代码是否需要运行VM的虚拟机,依此类推?)。 编辑 :好的,所以我看到我忽略了Java不必在VM中运行的事实。那如何解释如何用LISP编写LISP编译器呢?还是这完全是一个新问题? 问题答案: 最初,您认为Java需要虚拟机

  • 问题内容: 我有一个用于Elasticsearch的简单JSON查询,如下所示: 仅当值(在这种情况下为“ a1”)不为空时,才如何执行第二个“必须”条件? 问题答案: 您可以使用以下方法实现它-

  • 以下是我使用的文件: 组成部分xml 服务我mpl.java est.java 错误: