Home  >  Article  >  Backend Development  >  How to Add CDATA Sections to XML Files with SimpleXmlElement?

How to Add CDATA Sections to XML Files with SimpleXmlElement?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-23 13:30:30802browse

How to Add CDATA Sections to XML Files with SimpleXmlElement?

Using SimpleXmlElement to Write CDATA

When creating and updating XML files with SimpleXmlElement, you may encounter the need to add CDATA sections. Here's a tailored solution to accomplish this using an extension of the base class:

Custom SimpleXMLElement Class

To avoid conflicts with the native SimpleXmlElement class, we define our custom class, SimpleXMLExtended:

<code class="php">class SimpleXMLExtended extends SimpleXMLElement {

  // Create CDATA section custom function.
  public function addCData( $cdata_text ) {
    $node              = dom_import_simplexml( $this ); 
    $ownerDocumentNode = $node->ownerDocument;

    $node->appendChild( $ownerDocumentNode->createCDATASection( $cdata_text )); 
  }

}</code>

Example Usage

With our extended class in place, let's tackle the specific example:

<code class="php">// Name of the XML file.
$xmlFile    = 'config.xml';

// <?xml version=&quot;1.0&quot;?>
// <site></site>
// ^^^^^^^^^^^^^
$xml        = new SimpleXMLExtended( '<site/>' );

// Insert '<title><title>' into '<site></site>'.
// <?xml version=&quot;1.0&quot;?>
// <site>
//   <title></title>
//   ^^^^^^^^^^^^^^^
// </site>
$xml->title = NULL; // IMPORTANT! Need a node where to append.

// CDATA section custom function.
// <?xml version=&quot;1.0&quot;?>
// <site></site></code>

The above is the detailed content of How to Add CDATA Sections to XML Files with SimpleXmlElement?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn